Skip to content

Commit 7717e0e

Browse files
authored
v3.3 (#189)
1 parent 8bbf627 commit 7717e0e

File tree

1,233 files changed

+42285
-43629
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,233 files changed

+42285
-43629
lines changed

.github/dependabot.yml

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: github-actions
4+
directory: /
5+
schedule:
6+
interval: weekly

.github/workflows/dev-all.yml

+9-9
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
branches: [ dev ]
77
jobs:
88
ubuntu-dev:
9-
if: "!contains(github.event.head_commit.message, '[skip]')"
9+
if: ${{ !contains(github.event.head_commit.message, '[skip]') }}
1010
runs-on: ubuntu-22.04
1111
timeout-minutes: 60
1212
strategy:
@@ -27,7 +27,7 @@ jobs:
2727
- name: Clone
2828
uses: actions/checkout@v4
2929
- name: Golang
30-
uses: actions/setup-go@v4
30+
uses: actions/setup-go@v5
3131
with:
3232
cache: false
3333
- name: VTK
@@ -107,7 +107,7 @@ jobs:
107107
echo "ARTIFACT=$file_name" >> "$GITHUB_ENV"
108108
tar czf $file_name -C build/dist .
109109
- name: Upload
110-
uses: actions/upload-artifact@v3
110+
uses: actions/upload-artifact@v4
111111
with:
112112
name: ${{ env.ARTIFACT }}
113113
path: ${{ env.ARTIFACT }}
@@ -128,7 +128,7 @@ jobs:
128128
with:
129129
gcov: true
130130
macos-dev:
131-
if: "!contains(github.event.head_commit.message, '[skip]')"
131+
if: ${{ !contains(github.event.head_commit.message, '[skip]') }}
132132
runs-on: macos-11
133133
timeout-minutes: 100
134134
strategy:
@@ -143,7 +143,7 @@ jobs:
143143
- name: Clone
144144
uses: actions/checkout@v4
145145
- name: Golang
146-
uses: actions/setup-go@v4
146+
uses: actions/setup-go@v5
147147
with:
148148
cache: false
149149
- name: VTK
@@ -189,12 +189,12 @@ jobs:
189189
export DYLD_LIBRARY_PATH=/Users/runner/work/suanPan/suanPan/build/dist/lib/
190190
./build/dist/bin/suanPan -v
191191
- name: Upload
192-
uses: actions/upload-artifact@v3
192+
uses: actions/upload-artifact@v4
193193
with:
194194
name: ${{ env.ARTIFACT }}
195195
path: ${{ env.ARTIFACT }}
196196
windows-dev:
197-
if: "!contains(github.event.head_commit.message, '[skip]')"
197+
if: ${{ !contains(github.event.head_commit.message, '[skip]') }}
198198
runs-on: windows-2022
199199
timeout-minutes: 100
200200
strategy:
@@ -207,7 +207,7 @@ jobs:
207207
- name: Clone
208208
uses: actions/checkout@v4
209209
- name: Golang
210-
uses: actions/setup-go@v4
210+
uses: actions/setup-go@v5
211211
with:
212212
cache: false
213213
- name: VTK
@@ -248,7 +248,7 @@ jobs:
248248
run: |
249249
build/dist/bin/suanPan.exe -v
250250
- name: Upload
251-
uses: actions/upload-artifact@v3
251+
uses: actions/upload-artifact@v4
252252
with:
253253
name: ${{ env.ARTIFACT }}
254254
path: ${{ env.ARTIFACT }}

.github/workflows/docker.yml

-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ name: Docker
22
on:
33
push:
44
branches: [ dev ]
5-
pull_request:
6-
branches: [ dev ]
75
jobs:
86
ubuntu-dev:
97
if: "!contains(github.event.head_commit.message, '[skip]')"

.github/workflows/master-all.yml

+6-6
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
- name: Clone
1818
uses: actions/checkout@v4
1919
- name: Golang
20-
uses: actions/setup-go@v4
20+
uses: actions/setup-go@v5
2121
with:
2222
cache: false
2323
- name: Prepare
@@ -62,7 +62,7 @@ jobs:
6262
echo "ARTIFACT=$file_name" >> "$GITHUB_ENV"
6363
tar czf $file_name -C build/dist .
6464
- name: Upload
65-
uses: actions/upload-artifact@v3
65+
uses: actions/upload-artifact@v4
6666
with:
6767
name: ${{ env.ARTIFACT }}
6868
path: ${{ env.ARTIFACT }}
@@ -85,7 +85,7 @@ jobs:
8585
- name: Clone
8686
uses: actions/checkout@v4
8787
- name: Golang
88-
uses: actions/setup-go@v4
88+
uses: actions/setup-go@v5
8989
with:
9090
cache: false
9191
- name: Prepare
@@ -117,7 +117,7 @@ jobs:
117117
echo "ARTIFACT=$file_name" >> "$GITHUB_ENV"
118118
tar czf $file_name -C build/dist .
119119
- name: Upload
120-
uses: actions/upload-artifact@v3
120+
uses: actions/upload-artifact@v4
121121
with:
122122
name: ${{ env.ARTIFACT }}
123123
path: ${{ env.ARTIFACT }}
@@ -141,7 +141,7 @@ jobs:
141141
- name: Clone
142142
uses: actions/checkout@v4
143143
- name: Golang
144-
uses: actions/setup-go@v4
144+
uses: actions/setup-go@v5
145145
with:
146146
cache: false
147147
- name: Prepare
@@ -174,7 +174,7 @@ jobs:
174174
cd build/dist/bin
175175
7z a ../../../$file_name ./*
176176
- name: Upload
177-
uses: actions/upload-artifact@v3
177+
uses: actions/upload-artifact@v4
178178
with:
179179
name: ${{ env.ARTIFACT }}
180180
path: ${{ env.ARTIFACT }}

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ $RECYCLE.BIN/
2626
/MSVC/Debug/*
2727
/MSVC/Release/*
2828
/MSVC/suanPan/.vs/*
29+
/MSVC/suanPan/.idea/*
2930
/MSVC/suanPan/amd/x64/*
3031
/MSVC/suanPan/arpack/x64/*
3132
/MSVC/suanPan/ElementExample/x64/*

CHANGELOG.md

+23-3
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,35 @@
55
1. The `MKL` includes outdated `FEAST`, the external names in `FEAST` library are modified to avoid linking error.
66
2. The `SPIKE` solver may occasionally freeze, to circumvent, try to avoid mixing compilers from different vendors.
77
3. The `MUMPS` solver throws segfaults with large matrices.
8+
4. The `FGMRES` solver requires refinements.
9+
10+
## version 3.3
11+
12+
1. (breaking) revise syntax for `ConcreteTsai`, `Concrete21` and `Concrete22` using a more consistent definition
13+
2. fix tangent stiffness in `ConcreteK4` model [#171](https://github.com/TLCFEM/suanPan/pull/171)
14+
3. update `OpenBLAS` to version `0.3.25`
15+
4. update `SuperLU` to version `6.0.1`
16+
5. better `RCM` algorithm that may result in a smaller bandwidth, thus, potentially more efficient
17+
solving [#175](https://github.com/TLCFEM/suanPan/pull/175)
18+
6. update `Armadillo` to version `12.6.7` [#180](https://github.com/TLCFEM/suanPan/pull/180)
19+
7. enable lazy evaluation and avoid temporary global matrices, faster dynamic
20+
analysis [#183](https://github.com/TLCFEM/suanPan/pull/183)
21+
8. bugfixes: [#185](https://github.com/TLCFEM/suanPan/pull/185)
22+
9. update `Catch2` to version `3.5.2`
23+
10. update `fmt` to version `10.2.1`
24+
11. add nonviscous damping: `NonviscousNewmark` (global level integrator), `ElementalNonviscous` (element level
25+
modifier) and `Nonviscous01` (material level model)
826

927
## version 3.2
1028

1129
1. revise uniaxial universal damage models [#153](https://github.com/TLCFEM/suanPan/pull/153)
1230
2. update `OpenBLAS` to version `0.3.24`
1331
3. add a new uniaxial concrete model `ConcreteK4` [#155](https://github.com/TLCFEM/suanPan/pull/155)
14-
4. add beam element for arbitrary thin-/thick-walled open/close section with torsion and warping `B31OS` [#159](https://github.com/TLCFEM/suanPan/pull/159)
32+
4. add beam element for arbitrary thin-/thick-walled open/close section with torsion and
33+
warping `B31OS` [#159](https://github.com/TLCFEM/suanPan/pull/159)
1534
5. better local iteration convergence criterion [#161](https://github.com/TLCFEM/suanPan/pull/161)
16-
6. `B31OS` and `EB31OS` associated transformations `B3DOSL`, `B3DOSC`; sections, `Fibre3DOS`, `Cell3DOS`; material wrappers `OS146`, `OS146S`
35+
6. `B31OS` and `EB31OS` associated transformations `B3DOSL`, `B3DOSC`; sections, `Fibre3DOS`, `Cell3DOS`; material
36+
wrappers `OS146`, `OS146S`
1737
7. add elemental damping using Lee's model
1838
8. support Lode angle in CDPM2 [#163](https://github.com/TLCFEM/suanPan/pull/163)
1939
9. add `AICN` cubic Newton solver [#165](https://github.com/TLCFEM/suanPan/pull/165)
@@ -139,7 +159,7 @@
139159
2. add porous media plane strain elements `PCPE4UC`, `PCPE8UC`, `PCPE4DC`, `PCPE8DC`
140160
3. add N-M interaction enabled beam element `NMB31` and `NMB21`
141161
4. add N-M interaction enabled section `NM2D1`, `NM3D1` (elastic) and `NM2D2`, `NM3D2` (inelastic)
142-
5. change Rayleigh damping related syntax to include tangent stiffness term
162+
5. (breaking) change Rayleigh damping related syntax to include tangent stiffness term
143163
6. add different stiffness types to `LeeNewmarkFull`, add support of geometry nonlinearity
144164
7. revise section definition
145165
8. add `B3DC` corotational formulation support to 3D beams

CITATION.cff

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,4 @@ keywords:
2929
- Solid Mechanics
3030
license: GPL-3.0
3131
version: '3.2'
32-
date-released: '2023-11-06'
32+
date-released: '2024-01-24'

CMakeLists.txt

+52-34
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
1-
cmake_minimum_required(VERSION 3.13.0)
1+
cmake_minimum_required(VERSION 3.18)
22

33
cmake_policy(SET CMP0076 NEW)
44

5+
if (CMAKE_GNUtoMS_VCVARS OR MINGW)
6+
set(CMAKE_GNUtoMS ON)
7+
endif ()
8+
59
project(suanPan C CXX)
610

711
set(CMAKE_C_STANDARD 11)
812
set(CMAKE_CXX_STANDARD 20)
913
set(CMAKE_CXX_STANDARD_REQUIRED ON)
1014
set(CMAKE_INCLUDE_CURRENT_DIR ON)
1115
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
12-
if (CMAKE_GNUtoMS_VCVARS)
13-
set(CMAKE_GNUtoMS ON)
14-
endif ()
1516

1617
include(CheckLanguage)
1718
check_language(Fortran)
@@ -263,16 +264,21 @@ if (COMPILER_IDENTIFIER MATCHES "(linux|mac)")
263264
endif ()
264265
endif ()
265266
if (CMAKE_CXX_COMPILER_ID MATCHES "IntelLLVM")
266-
set(ONEAPI_LIB $ENV{ONEAPI_ROOT}/compiler/latest/linux/compiler/lib/intel64_lin)
267-
file(GLOB ONEAPI_FILES
268-
${ONEAPI_LIB}/libifcoremt${DECOR}*${SUFFIX}
269-
${ONEAPI_LIB}/libifport${DECOR}*${SUFFIX}
270-
${ONEAPI_LIB}/libimf${DECOR}*${SUFFIX}
271-
${ONEAPI_LIB}/libintlc${DECOR}*${SUFFIX}
272-
${ONEAPI_LIB}/libiomp5${DECOR}*${SUFFIX}
273-
${ONEAPI_LIB}/libsvml${DECOR}*${SUFFIX}
267+
set(PATH_LIST
268+
$ENV{ONEAPI_ROOT}/compiler/latest/lib # since 2024
269+
$ENV{ONEAPI_ROOT}/compiler/latest/linux/compiler/lib/intel64_lin # prior to 2024
274270
)
275-
install(PROGRAMS ${ONEAPI_FILES} DESTINATION lib)
271+
foreach (PATHA ${PATH_LIST})
272+
file(GLOB ONEAPI_FILES
273+
${PATHA}/libifcoremt${DECOR}*${SUFFIX}
274+
${PATHA}/libifport${DECOR}*${SUFFIX}
275+
${PATHA}/libimf${DECOR}*${SUFFIX}
276+
${PATHA}/libintlc${DECOR}*${SUFFIX}
277+
${PATHA}/libiomp5${DECOR}*${SUFFIX}
278+
${PATHA}/libsvml${DECOR}*${SUFFIX}
279+
)
280+
install(PROGRAMS ${ONEAPI_FILES} DESTINATION lib)
281+
endforeach ()
276282
endif ()
277283
if (USE_MAGMA)
278284
file(GLOB MAGMA_FILES ${MAGMAROOT}/lib/libmagma*.so)
@@ -287,15 +293,18 @@ elseif (COMPILER_IDENTIFIER MATCHES "win")
287293
install(FILES ${TBB_FILES} DESTINATION bin)
288294
endif ()
289295
if (USE_MKL AND MKLROOT MATCHES "(oneapi|oneAPI)")
290-
file(GLOB MKL_FILES ${MKLROOT}/redist/intel64/mkl_rt*)
291-
install(FILES ${MKL_FILES} DESTINATION bin)
292-
file(GLOB MKL_FILES ${MKLROOT}/redist/intel64/mkl_core*)
293-
install(FILES ${MKL_FILES} DESTINATION bin)
294-
file(GLOB MKL_FILES ${MKLROOT}/redist/intel64/mkl_def*)
295-
install(FILES ${MKL_FILES} DESTINATION bin)
296-
file(GLOB MKL_FILES ${MKLROOT}/redist/intel64/mkl_avx*)
297-
install(FILES ${MKL_FILES} DESTINATION bin)
298-
file(GLOB MKL_FILES ${MKLROOT}/redist/intel64/mkl_intel_thread.*)
296+
file(GLOB MKL_FILES
297+
${MKLROOT}/redist/intel64/mkl_rt*
298+
${MKLROOT}/redist/intel64/mkl_core*
299+
${MKLROOT}/redist/intel64/mkl_def*
300+
${MKLROOT}/redist/intel64/mkl_avx*
301+
${MKLROOT}/redist/intel64/mkl_intel_thread.*
302+
${MKLROOT}/bin/mkl_rt*
303+
${MKLROOT}/bin/mkl_core*
304+
${MKLROOT}/bin/mkl_def*
305+
${MKLROOT}/bin/mkl_avx*
306+
${MKLROOT}/bin/mkl_intel_thread.*
307+
)
299308
install(FILES ${MKL_FILES} DESTINATION bin)
300309
else ()
301310
install(FILES Libs/win/libopenblas.dll DESTINATION bin)
@@ -308,28 +317,37 @@ elseif (COMPILER_IDENTIFIER MATCHES "vs")
308317
endif ()
309318
if (USE_MKL AND MKLROOT MATCHES "(oneapi|oneAPI)")
310319
if (LINK_DYNAMIC_MKL)
311-
file(GLOB MKL_FILES ${MKLROOT}/redist/intel64/mkl_core*)
312-
install(FILES ${MKL_FILES} DESTINATION bin)
313-
file(GLOB MKL_FILES ${MKLROOT}/redist/intel64/mkl_def*)
314-
install(FILES ${MKL_FILES} DESTINATION bin)
315-
file(GLOB MKL_FILES ${MKLROOT}/redist/intel64/mkl_avx*)
320+
file(GLOB MKL_FILES
321+
${MKLROOT}/redist/intel64/mkl_core*
322+
${MKLROOT}/redist/intel64/mkl_def*
323+
${MKLROOT}/redist/intel64/mkl_avx*
324+
${MKLROOT}/bin/mkl_core*
325+
${MKLROOT}/bin/mkl_def*
326+
${MKLROOT}/bin/mkl_avx*
327+
)
316328
install(FILES ${MKL_FILES} DESTINATION bin)
317329
if (BUILD_MULTITHREAD)
318-
file(GLOB MKL_FILES ${MKLROOT}/redist/intel64/mkl_tbb_thread.*)
330+
file(GLOB MKL_FILES
331+
${MKLROOT}/redist/intel64/mkl_tbb_thread.*
332+
${MKLROOT}/bin/mkl_tbb_thread.*
333+
)
319334
install(FILES ${MKL_FILES} DESTINATION bin)
320335
else ()
321-
file(GLOB MKL_FILES ${MKLROOT}/redist/intel64/mkl_intel_thread.*)
336+
file(GLOB MKL_FILES
337+
${MKLROOT}/redist/intel64/mkl_intel_thread.*
338+
${MKLROOT}/bin/mkl_intel_thread.*
339+
)
322340
install(FILES ${MKL_FILES} DESTINATION bin)
323341
endif ()
324342
endif ()
325343
if (USE_INTEL_OPENMP)
326-
find_file(libifcoremd libifcoremd.dll PATHS ${MKLROOT}/../../)
344+
find_file(libifcoremd libifcoremd.dll PATHS ${MKLROOT}/../../ ${MKLROOT}/../../compiler/latest/bin/ REQUIRED)
327345
install(FILES ${libifcoremd} DESTINATION bin)
328-
find_file(libiomp5md libiomp5md.dll PATHS ${MKLROOT}/../../)
346+
find_file(libiomp5md libiomp5md.dll PATHS ${MKLROOT}/../../ ${MKLROOT}/../../compiler/latest/bin/ REQUIRED)
329347
install(FILES ${libiomp5md} DESTINATION bin)
330-
find_file(libmmd libmmd.dll PATHS ${MKLROOT}/../../)
348+
find_file(libmmd libmmd.dll PATHS ${MKLROOT}/../../ ${MKLROOT}/../../compiler/latest/bin/ REQUIRED)
331349
install(FILES ${libmmd} DESTINATION bin)
332-
find_file(svml_dispmd svml_dispmd.dll PATHS ${MKLROOT}/../../)
350+
find_file(svml_dispmd svml_dispmd.dll PATHS ${MKLROOT}/../../ ${MKLROOT}/../../compiler/latest/bin/ REQUIRED)
333351
install(FILES ${svml_dispmd} DESTINATION bin)
334352
endif ()
335353
else ()
@@ -395,7 +413,7 @@ if (CMAKE_SYSTEM_NAME MATCHES "Linux")
395413
set(CPACK_PACKAGE_ICON ${ROOT}/Resource/suanPan-ua.svg)
396414
set(CPACK_PACKAGE_RELEASE 1)
397415
set(CPACK_PACKAGE_VENDOR "tlcfem")
398-
set(CPACK_PACKAGE_VERSION "3.2.0")
416+
set(CPACK_PACKAGE_VERSION "3.3.0")
399417
set(CPACK_PACKAGE_DESCRIPTION "An Open Source, Parallel and Heterogeneous Finite Element Analysis Framework")
400418
set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/TLCFEM/suanPan")
401419

Constraint/BC/GroupMultiplierBC.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (C) 2017-2023 Theodore Chang
2+
* Copyright (C) 2017-2024 Theodore Chang
33
*
44
* This program is free software: you can redistribute it and/or modify
55
* it under the terms of the GNU General Public License as published by

Constraint/BC/GroupMultiplierBC.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (C) 2017-2023 Theodore Chang
2+
* Copyright (C) 2017-2024 Theodore Chang
33
*
44
* This program is free software: you can redistribute it and/or modify
55
* it under the terms of the GNU General Public License as published by

Constraint/BC/GroupPenaltyBC.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (C) 2017-2023 Theodore Chang
2+
* Copyright (C) 2017-2024 Theodore Chang
33
*
44
* This program is free software: you can redistribute it and/or modify
55
* it under the terms of the GNU General Public License as published by
@@ -20,12 +20,12 @@
2020
#include <Domain/Group/Group.h>
2121

2222
GroupPenaltyBC::GroupPenaltyBC(const unsigned T, const unsigned S, uvec&& N, uvec&& D)
23-
: MultiplierBC(T, S, uvec{}, std::forward<uvec>(D))
24-
, groups(std::forward<uvec>(N)) {}
23+
: MultiplierBC(T, S, uvec{}, std::move(D))
24+
, groups(std::move(N)) {}
2525

2626
GroupPenaltyBC::GroupPenaltyBC(const unsigned T, const unsigned S, uvec&& N, const char TP)
2727
: MultiplierBC(T, S, uvec{}, TP)
28-
, groups(std::forward<uvec>(N)) {}
28+
, groups(std::move(N)) {}
2929

3030
int GroupPenaltyBC::initialize(const shared_ptr<DomainBase>& D) {
3131
suanpan::unordered_set<uword> tag;

Constraint/BC/GroupPenaltyBC.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (C) 2017-2023 Theodore Chang
2+
* Copyright (C) 2017-2024 Theodore Chang
33
*
44
* This program is free software: you can redistribute it and/or modify
55
* it under the terms of the GNU General Public License as published by

Constraint/BC/MultiplierBC.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (C) 2017-2023 Theodore Chang
2+
* Copyright (C) 2017-2024 Theodore Chang
33
*
44
* This program is free software: you can redistribute it and/or modify
55
* it under the terms of the GNU General Public License as published by

0 commit comments

Comments
 (0)