OpenRadioss
2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
nlocal_reg_mod.F
Go to the documentation of this file.
1
Copyright> OpenRadioss
2
Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3
Copyright>
4
Copyright> This program is free software: you can redistribute it and/or modify
5
Copyright> it under the terms of the GNU Affero General Public License as published by
6
Copyright> the Free Software Foundation, either version 3 of the License, or
7
Copyright> (at your option) any later version.
8
Copyright>
9
Copyright> This program is distributed in the hope that it will be useful,
10
Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11
Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
Copyright> GNU Affero General Public License for more details.
13
Copyright>
14
Copyright> You should have received a copy of the GNU Affero General Public License
15
Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16
Copyright>
17
Copyright>
18
Copyright> Commercial Alternative: Altair Radioss Software
19
Copyright>
20
Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21
Copyright> software under a commercial license. Contact Altair to discuss further if the
22
Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23
!||====================================================================
24
!|| nlocal_reg_mod ../common_source/modules/nlocal_reg_mod.F
25
!||--- called by ------------------------------------------------------
26
!|| alemain ../engine/source/ale/alemain.F
27
!|| bforc2 ../engine/source/ale/bimat/bforc2.F
28
!|| c3fint_reg ../engine/source/elements/sh3n/coque3n/c3fint_reg.F
29
!|| c3fint_reg_ini ../starter/source/elements/sh3n/coque3n/c3fint_reg_ini.F
30
!|| c3forc3 ../engine/source/elements/sh3n/coque3n/c3forc3.F
31
!|| c3forc3_crk ../engine/source/elements/xfem/c3forc3_crk.F
32
!|| c3init3 ../starter/source/elements/sh3n/coque3n/c3init3.F
33
!|| c_front ../starter/source/restart/ddsplit/c_front.F
34
!|| cbafint_reg ../engine/source/elements/shell/coqueba/cbafint_reg.F
35
!|| cbafint_reg_ini ../starter/source/elements/shell/coqueba/cbafint_reg_ini.F
36
!|| cbaforc3 ../engine/source/elements/shell/coqueba/cbaforc3.F
37
!|| cbainit3 ../starter/source/elements/shell/coqueba/cbainit3.F
38
!|| cbavarnl ../engine/source/elements/shell/coqueba/cbavarnl.F
39
!|| cdk6fint_reg ../engine/source/elements/sh3n/coquedk6/cdk6fint_reg.F
40
!|| cdk6forc3 ../engine/source/elements/sh3n/coquedk6/cdk6forc3.F
41
!|| cdkfint_reg ../engine/source/elements/sh3n/coquedk/cdkfint_reg.F
42
!|| cdkfint_reg_ini ../starter/source/elements/sh3n/coquedk/cdkfint_reg_ini.F
43
!|| cdkforc3 ../engine/source/elements/sh3n/coquedk/cdkforc3.F
44
!|| cdkinit3 ../starter/source/elements/sh3n/coquedk/cdkinit3.F
45
!|| cfint_reg ../engine/source/elements/shell/coque/cfint_reg.F
46
!|| cfint_reg_ini ../starter/source/elements/shell/coque/cfint_reg_ini.F
47
!|| cforc3 ../engine/source/elements/shell/coque/cforc3.F
48
!|| cforc3_crk ../engine/source/elements/xfem/cforc3_crk.F
49
!|| cinit3 ../starter/source/elements/shell/coque/cinit3.F
50
!|| cmain3 ../engine/source/materials/mat_share/cmain3.F
51
!|| czforc3 ../engine/source/elements/shell/coquez/czforc3.F
52
!|| czforc3_crk ../engine/source/elements/xfem/czforc3_crk.F
53
!|| ddsplit ../starter/source/restart/ddsplit/ddsplit.F
54
!|| dtcba_reg ../engine/source/elements/shell/coqueba/dtcba_reg.F
55
!|| dtcdk_reg ../engine/source/elements/sh3n/coquedk/dtcdk_reg.F
56
!|| forint ../engine/source/elements/forint.F
57
!|| forintc ../engine/source/elements/forintc.F
58
!|| forintp ../engine/source/elements/forintp.F
59
!|| hm_read_fail ../starter/source/materials/fail/hm_read_fail.F
60
!|| hm_read_fail_gurson ../starter/source/materials/fail/gurson/hm_read_fail_gurson.F
61
!|| hm_read_nonlocal ../starter/source/materials/nonlocal/hm_read_nonlocal.F
62
!|| ig3duforc3 ../engine/source/elements/ige3d/ig3duforc3.F
63
!|| initia ../starter/source/elements/initia/initia.F
64
!|| law104_upd ../starter/source/materials/mat/mat104/law104_upd.F
65
!|| lectur ../engine/source/input/lectur.F
66
!|| mmain ../engine/source/materials/mat_share/mmain.F90
67
!|| mulaw ../engine/source/materials/mat_share/mulaw.F90
68
!|| mulawc ../engine/source/materials/mat_share/mulawc.F90
69
!|| nloc_dmg_init ../starter/source/materials/fail/nloc_dmg_init.F
70
!|| nlocal_acc ../engine/source/assembly/nlocal_acc.F
71
!|| nlocal_dtnoda ../engine/source/time_step/nlocal_dtnoda.F
72
!|| nlocal_incr ../engine/source/assembly/nlocal_incr.F
73
!|| nlocal_init_sta ../starter/source/materials/fail/nlocal_init_sta.F
74
!|| nlocal_vel ../engine/source/assembly/nlocal_vel.F
75
!|| q4forc2 ../engine/source/elements/solid_2d/quad4/q4forc2.F
76
!|| qforc2 ../engine/source/elements/solid_2d/quad/qforc2.F
77
!|| r2r_exchange ../engine/source/coupling/rad2rad/r2r_exchange.F
78
!|| r2r_getdata ../engine/source/coupling/rad2rad/r2r_getdata.F
79
!|| r2r_group ../starter/source/coupling/rad2rad/r2r_group.F
80
!|| r2r_init ../engine/source/coupling/rad2rad/r2r_init.F
81
!|| rdresb ../engine/source/output/restart/rdresb.F
82
!|| read_material_models ../starter/source/materials/read_material_models.F
83
!|| read_nloc_struct ../engine/source/output/restart/read_nloc_struct.F
84
!|| resol ../engine/source/engine/resol.F
85
!|| resol_init ../engine/source/engine/resol_init.F
86
!|| restmod ../engine/share/modules/restart_mod.F
87
!|| s10forc3 ../engine/source/elements/solid/solide10/s10forc3.F
88
!|| s16forc3 ../engine/source/elements/thickshell/solide16/s16forc3.F
89
!|| s20forc3 ../engine/source/elements/solid/solide20/s20forc3.F
90
!|| s4fint_reg ../engine/source/elements/solid/solide4/s4fint_reg.F
91
!|| s4forc3 ../engine/source/elements/solid/solide4/s4forc3.F
92
!|| s6cfint_reg ../engine/source/elements/thickshell/solide6c/s6cfint_reg.F
93
!|| s6cforc3 ../engine/source/elements/thickshell/solide6c/s6cforc3.F
94
!|| s6fint_reg ../engine/source/elements/solid/solide6z/s6fint_reg.F90
95
!|| s6zforc3 ../engine/source/elements/solid/solide6z/s6zforc3.F90
96
!|| s8cfint_reg ../engine/source/elements/thickshell/solide8c/s8cfint_reg.F
97
!|| s8cforc3 ../engine/source/elements/thickshell/solide8c/s8cforc3.F
98
!|| s8eforc3 ../engine/source/elements/solid/solide8e/s8eforc3.F
99
!|| s8sforc3 ../engine/source/elements/solid/solide8s/s8sforc3.F
100
!|| s8zfint_reg ../engine/source/elements/solid/solide8z/s8zfint_reg.F
101
!|| s8zforc3 ../engine/source/elements/solid/solide8z/s8zforc3.F
102
!|| scfint_reg ../engine/source/elements/thickshell/solidec/scfint_reg.F
103
!|| scforc3 ../engine/source/elements/thickshell/solidec/scforc3.F
104
!|| sfint_reg ../engine/source/elements/solid/solide/sfint_reg.F
105
!|| sforc3 ../engine/source/elements/solid/solide/sforc3.F
106
!|| spmd_collect_nlocal ../engine/source/mpi/output/spmd_collect_nlocal.F
107
!|| spmd_exch_r2r_nl ../engine/source/mpi/r2r/spmd_exch_r2r_nl.F
108
!|| spmd_exch_sub_poff ../engine/source/mpi/spmd_exch_sub.F
109
!|| spmd_exch_sub_pon ../engine/source/mpi/spmd_exch_sub.F
110
!|| spmd_sub_boundaries ../engine/source/mpi/spmd_exch_sub.F
111
!|| spstres ../engine/source/elements/sph/spstres.F
112
!|| szforc3 ../engine/source/elements/solid/solidez/szforc3.F
113
!|| updmat ../starter/source/materials/updmat.F
114
!|| usermat_shell ../engine/source/materials/mat_share/usermat_shell.F
115
!|| usermat_solid ../engine/source/materials/mat_share/usermat_solid.F
116
!|| w_front ../starter/source/restart/ddsplit/w_front.F
117
!|| write_nloc_struct ../engine/source/output/restart/write_nloc_struct.F
118
!||====================================================================
119
MODULE
nlocal_reg_mod
120
C-----------------------------------------------------------------------
121
#include "my_real.inc"
122
c=======================================================================
123
c define type NLOCAL_STRUCT_ for nodal variable regularization
124
c=======================================================================
125
c
126
!
127
! Safety coefficient for non-local stability vs mechanical stability
128
! (here we have a good compromise to find, DENS must be as low as
129
! possible but sufficiently high to avoid the decrease of the timestep)
130
my_real
,
PARAMETER
:: csta = 40.0d0
131
!
132
! Coefficient for non-local stability to take into account damping
133
my_real
,
PARAMETER
:: cdamp = 0.7d0
134
!
135
TYPE
nlocal_str_
136
integer
:: imod
! Non-local regularization flag
137
integer
:: nnod
! Number of nodes with additional d.o.fs
138
integer
:: l_nloc
! Length of non-local vectors
139
integer
:: numels_nl
! Number of non-local solids elements
140
integer
:: numelc_nl
! Number of non-local shell elements
141
integer
:: numeltg_nl
! Number of non-local triangle shell elements
142
integer
:: nddmax
! Maximum number of additional d.o.fs
143
integer
:: lcne_nl
! Length of the PROCNE table
144
my_real
,
DIMENSION(:)
,
ALLOCATABLE
:: dens
! (NUMMAT) Non-local 'density' parameter
145
my_real
,
DIMENSION(:)
,
ALLOCATABLE
:: damp
! (NUMMAT) Non-local 'damping' coefficient
146
my_real
,
DIMENSION(:)
,
ALLOCATABLE
:: len
! (NUMMAT) Non-local internal length
147
my_real
,
DIMENSION(:)
,
ALLOCATABLE
:: le_max
! (NUMMAT) Maximal element length target
148
my_real
,
DIMENSION(:)
,
ALLOCATABLE
:: sspnl
! (NUMMAT) Non-local "sound speed"
149
integer
,
DIMENSION(:)
,
ALLOCATABLE
:: indx ! (nnod) nodal
index
table
150
integer
,
DIMENSION(:)
,
ALLOCATABLE
:: posi
! (NNOD+1) Node first d.o.f position in non-local vectors
151
integer
,
DIMENSION(:)
,
ALLOCATABLE
:: idxi ! (numnod) inversed nodal index table
152
integer
,
DIMENSION(:)
,
ALLOCATABLE
:: addcne
! (0:NNOD+1) Addresses of non-local nodes in the FSKY vector
153
integer
,
DIMENSION(:)
,
ALLOCATABLE
:: cne
! ADDCNE(NNOD+1)-1 Element attached to nodes in the FSKY vector
154
integer
,
DIMENSION(:)
,
ALLOCATABLE
::
PROCNE
! LCNE_NL Number of the processor on which the element is located
155
integer
,
DIMENSION(:,:)
,
ALLOCATABLE
:: iads
! Addresses sky for solids non-local elements
156
integer
,
DIMENSION(:,:)
,
ALLOCATABLE
:: iadc
! Addresses sky for shells non-local elements
157
integer
,
DIMENSION(:,:)
,
ALLOCATABLE
:: iadtg
! Addresses sky for triangle shells non-local elements
158
my_real
,
DIMENSION(:)
,
ALLOCATABLE
:: mass
! (L_NLOC) Non-local mass
159
my_real
,
DIMENSION(:)
,
ALLOCATABLE
:: mass0
! (L_NLOC) Non-local mass initial
160
my_real
,
DIMENSION(:,:)
,
ALLOCATABLE
:: fnl
! (L_NLOC,NTHREAD) Non-local force/accelerations
161
my_real
,
DIMENSION(:)
,
ALLOCATABLE
:: vnl
! (L_NLOC) Non-local variable velocities
162
my_real
,
DIMENSION(:)
,
ALLOCATABLE
:: vnl_old
! (L_NLOC) Old Non-local variable velocities
163
my_real
,
DIMENSION(:)
,
ALLOCATABLE
:: dnl
! (L_NLOC) Non-local variable increment
164
my_real
,
DIMENSION(:)
,
ALLOCATABLE
:: unl
! (L_NLOC) Non-local cumulated variable
165
my_real
,
DIMENSION(:,:)
,
ALLOCATABLE
:: stifnl
! (L_NLOC,NTHREAD) Non-local nodal stiffness
166
my_real
,
DIMENSION(:,:)
,
ALLOCATABLE
:: fsky
! (ADDCNE(NNOD+1),NDDMAX) Non-local skyline vector for PARITH/ON
167
my_real
,
DIMENSION(:,:)
,
ALLOCATABLE
:: stsky
! (ADDCNE(NNOD+1),NDDMAX) Non-local skyline vector for stiffness in PARITH/ON
168
integer
,
DIMENSION(:)
,
ALLOCATABLE
:: iad_elem
! (NSPMD+1) Non-local IAD_ELEM vector for SPMD boundaries
169
integer
,
DIMENSION(:)
,
ALLOCATABLE
:: iad_size
! (NSPMD+1) Non-local size of the buffer at the domains boundaries
170
integer
,
DIMENSION(:)
,
ALLOCATABLE
:: fr_elem
! (TOTAL_NODES) Non-local FR_ELEM vector for SPMD boundaries
171
C SPMD PON BOUNDARIES
172
integer
,
DIMENSION(:)
,
ALLOCATABLE
:: isendsp
! Skyline PON Send index
173
integer
,
DIMENSION(:)
,
ALLOCATABLE
:: irecsp
! Skyline PON Receive index
174
175
! --------------------------------
176
! communication for parith/on
177
integer
,
DIMENSION(:)
,
ALLOCATABLE
:: iadsdp
! dim = NSPMD+1
178
integer
,
DIMENSION(:)
,
ALLOCATABLE
:: iadrcp
! dim = NSPMD+1
179
integer
,
dimension(:,:)
,
allocatable
:: fr_nbcc
! dim = 2,NSPMD
180
integer
,
DIMENSION(:)
,
ALLOCATABLE
:: fr_elem_s
181
integer
,
DIMENSION(:)
,
ALLOCATABLE
:: fr_elem_r
182
! --------------------------------
183
END TYPE
nlocal_str_
184
CONTAINS
185
c=======================================================================
186
c define routine GET_LEMAX to automatically determine the maximal element length
187
c=======================================================================
188
!||====================================================================
189
!|| get_lemax ../common_source/modules/nlocal_reg_mod.F
190
!||--- called by ------------------------------------------------------
191
!|| hm_read_fail_gurson ../starter/source/materials/fail/gurson/hm_read_fail_gurson.F
192
!|| hm_read_nonlocal ../starter/source/materials/nonlocal/hm_read_nonlocal.F
193
!|| law104_upd ../starter/source/materials/mat/mat104/law104_upd.F
194
!||====================================================================
195
SUBROUTINE
get_lemax
(LE_MAX,NLOC_LENGTH)
196
#include "implicit_f.inc"
197
my_real
,
INTENT(IN)
:: nloc_length
198
my_real
,
INTENT(OUT)
:: le_max
199
le_max = sqrt(pi)*nloc_length/three
200
END SUBROUTINE
get_lemax
201
c=======================================================================
202
c define routine GET_LENGTH to automatically determine the maximal element length
203
c=======================================================================
204
!||====================================================================
205
!|| get_length ../common_source/modules/nlocal_reg_mod.F
206
!||--- called by ------------------------------------------------------
207
!|| hm_read_fail_gurson ../starter/source/materials/fail/gurson/hm_read_fail_gurson.F
208
!|| hm_read_nonlocal ../starter/source/materials/nonlocal/hm_read_nonlocal.F
209
!||====================================================================
210
SUBROUTINE
get_length
(NLOC_LENGTH,LE_MAX)
211
#include "implicit_f.inc"
212
my_real
,
INTENT(IN)
:: le_max
213
my_real
,
INTENT(OUT)
:: nloc_length
214
nloc_length = three*le_max
/sqrt(pi)
215
END SUBROUTINE
get_length
216
c=======================================================================
217
END MODULE
nlocal_reg_mod
my_real
#define my_real
Definition
cppsort.cpp:32
nlocal_reg_mod
Definition
nlocal_reg_mod.F:119
nlocal_reg_mod::get_lemax
subroutine get_lemax(le_max, nloc_length)
Definition
nlocal_reg_mod.F:196
nlocal_reg_mod::get_length
subroutine get_length(nloc_length, le_max)
Definition
nlocal_reg_mod.F:211
nlocal_reg_mod::nlocal_str_
Definition
nlocal_reg_mod.F:135
common_source
modules
nlocal_reg_mod.F
Generated by
1.15.0