OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
nlocal_reg_mod.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> 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!|| s8cfint_reg ../engine/source/elements/thickshell/solide8c/s8cfint_reg.F
95!|| s8cforc3 ../engine/source/elements/thickshell/solide8c/s8cforc3.F
96!|| s8eforc3 ../engine/source/elements/solid/solide8e/s8eforc3.F
97!|| s8sforc3 ../engine/source/elements/solid/solide8s/s8sforc3.F
98!|| s8zfint_reg ../engine/source/elements/solid/solide8z/s8zfint_reg.F
99!|| s8zforc3 ../engine/source/elements/solid/solide8z/s8zforc3.F
100!|| scfint_reg ../engine/source/elements/thickshell/solidec/scfint_reg.F
101!|| scforc3 ../engine/source/elements/thickshell/solidec/scforc3.F
102!|| sfint_reg ../engine/source/elements/solid/solide/sfint_reg.F
103!|| sforc3 ../engine/source/elements/solid/solide/sforc3.F
104!|| spmd_collect_nlocal ../engine/source/mpi/output/spmd_collect_nlocal.F
105!|| spmd_exch_r2r_nl ../engine/source/mpi/r2r/spmd_exch_r2r_nl.F
106!|| spmd_exch_sub_poff ../engine/source/mpi/spmd_exch_sub.F
107!|| spmd_exch_sub_pon ../engine/source/mpi/spmd_exch_sub.F
108!|| spmd_sub_boundaries ../engine/source/mpi/spmd_exch_sub.F
109!|| spstres ../engine/source/elements/sph/spstres.F
110!|| szforc3 ../engine/source/elements/solid/solidez/szforc3.F
111!|| updmat ../starter/source/materials/updmat.f
112!|| usermat_shell ../engine/source/materials/mat_share/usermat_shell.F
113!|| usermat_solid ../engine/source/materials/mat_share/usermat_solid.F
114!|| w_front ../starter/source/restart/ddsplit/w_front.F
115!|| write_nloc_struct ../engine/source/output/restart/write_nloc_struct.F
116!||====================================================================
118C-----------------------------------------------------------------------
119#include "my_real.inc"
120c=======================================================================
121c define type NLOCAL_STRUCT_ for nodal variable regularization
122c=======================================================================
123c
125 integer :: imod ! Non-local regularization flag
126 integer :: nnod ! Number of nodes with additional d.o.fs
127 integer :: l_nloc ! Length of non-local vectors
128 integer :: numels_nl ! Number of non-local solids elements
129 integer :: numelc_nl ! Number of non-local shell elements
130 integer :: numeltg_nl ! Number of non-local triangle shell elements
131 integer :: nddmax ! Maximum number of additional d.o.fs
132 integer :: lcne_nl ! Length of the PROCNE table
133 my_real, DIMENSION(:) , ALLOCATABLE :: dens ! (NUMMAT) Non-local 'density' parameter
134 my_real, DIMENSION(:) , ALLOCATABLE :: damp ! (NUMMAT) Non-local 'damping' coefficient
135 my_real, DIMENSION(:) , ALLOCATABLE :: len ! (NUMMAT) Non-local internal length
136 my_real, DIMENSION(:) , ALLOCATABLE :: le_max ! (NUMMAT) Maximal element length target
137 my_real, DIMENSION(:) , ALLOCATABLE :: sspnl ! (NUMMAT) Non-local "sound speed"
138 integer, DIMENSION(:) , ALLOCATABLE :: indx ! (NNOD) Nodal index table
139 integer, DIMENSION(:) , ALLOCATABLE :: posi ! (NNOD+1) Node first d.o.f position in non-local vectors
140 integer, DIMENSION(:) , ALLOCATABLE :: idxi ! (NUMNOD) Inversed nodal index table
141 integer, DIMENSION(:) , ALLOCATABLE :: addcne ! (0:NNOD+1) Addresses of non-local nodes in the FSKY vector
142 integer, DIMENSION(:) , ALLOCATABLE :: cne ! ADDCNE(NNOD+1)-1 Element attached to nodes in the FSKY vector
143 integer, DIMENSION(:) , ALLOCATABLE :: procne ! LCNE_NL Number of the processor on which the element is located
144 integer, DIMENSION(:,:) , ALLOCATABLE :: iads ! Addresses sky for solids non-local elements
145 integer, DIMENSION(:,:) , ALLOCATABLE :: iadc ! Addresses sky for shells non-local elements
146 integer, DIMENSION(:,:) , ALLOCATABLE :: iadtg ! Addresses sky for triangle shells non-local elements
147 my_real, DIMENSION(:) , ALLOCATABLE :: mass ! (L_NLOC) Non-local mass
148 my_real, DIMENSION(:) , ALLOCATABLE :: mass0 ! (l_nloc) non-local mass initial
149 my_real, DIMENSION(:,:) , ALLOCATABLE :: fnl ! (L_NLOC,NTHREAD) Non-local force/accelerations
150 my_real, DIMENSION(:) , ALLOCATABLE :: vnl ! (L_NLOC) Non-local variable velocities
151 my_real, DIMENSION(:) , ALLOCATABLE :: vnl_old ! (L_NLOC) Old Non-local variable velocities
152 my_real, DIMENSION(:) , ALLOCATABLE :: dnl ! (L_NLOC) Non-local variable increment
153 my_real, DIMENSION(:) , ALLOCATABLE :: unl ! (L_NLOC) Non-local cumulated variable
154 my_real, DIMENSION(:,:) , ALLOCATABLE :: stifnl ! (L_NLOC,NTHREAD) Non-local nodal stiffness
155 my_real, DIMENSION(:,:) , ALLOCATABLE :: fsky ! (ADDCNE(NNOD+1),NDDMAX) Non-local skyline vector for PARITH/ON
156 my_real, DIMENSION(:,:) , ALLOCATABLE :: stsky ! (ADDCNE(NNOD+1),NDDMAX) Non-local skyline vector for stiffness in PARITH/ON
157 integer, DIMENSION(:) , ALLOCATABLE :: iad_elem ! (NSPMD+1) Non-local IAD_ELEM vector for SPMD boundaries
158 integer, DIMENSION(:) , ALLOCATABLE :: iad_size ! (NSPMD+1) Non-local size of the buffer at the domains boundaries
159 integer, DIMENSION(:) , ALLOCATABLE :: fr_elem ! (TOTAL_NODES) Non-local FR_ELEM vector for SPMD boundaries
160C SPMD PON BOUNDARIES
161 integer, DIMENSION(:) , ALLOCATABLE :: isendsp ! Skyline PON Send index
162 integer, DIMENSION(:) , ALLOCATABLE :: irecsp ! Skyline PON Receive index
163
164! --------------------------------
165! communication for parith/on
166 integer, DIMENSION(:) , ALLOCATABLE :: iadsdp ! dim = NSPMD+1
167 integer, DIMENSION(:) , ALLOCATABLE :: iadrcp ! dim = NSPMD+1
168 integer, dimension(:,:) , allocatable :: FR_NBCC ! dim = 2,NSPMD
169 integer, DIMENSION(:) , ALLOCATABLE :: fr_elem_s
170 integer, DIMENSION(:) , ALLOCATABLE :: fr_elem_r
171! --------------------------------
172 END TYPE nlocal_str_
173 CONTAINS
174c=======================================================================
175c define routine GET_LEMAX to automatically determine the maximal element length
176c=======================================================================
177!||====================================================================
178!|| get_lemax ../common_source/modules/nlocal_reg_mod.F
179!||--- called by ------------------------------------------------------
180!|| hm_read_fail_gurson ../starter/source/materials/fail/gurson/hm_read_fail_gurson.F
181!|| hm_read_nonlocal ../starter/source/materials/nonlocal/hm_read_nonlocal.F
182!|| law104_upd ../starter/source/materials/mat/mat104/law104_upd.F
183!||====================================================================
184 SUBROUTINE get_lemax(LE_MAX,NLOC_LENGTH)
185#include "implicit_f.inc"
186 my_real, INTENT(IN) :: nloc_length
187 my_real, INTENT(OUT) :: le_max
188 le_max = sqrt(pi)*nloc_length/three
189 END SUBROUTINE get_lemax
190c=======================================================================
191c define routine GET_LENGTH to automatically determine the maximal element length
192c=======================================================================
193!||====================================================================
194!|| get_length ../common_source/modules/nlocal_reg_mod.F
195!||--- called by ------------------------------------------------------
196!|| hm_read_fail_gurson ../starter/source/materials/fail/gurson/hm_read_fail_gurson.F
197!|| hm_read_nonlocal ../starter/source/materials/nonlocal/hm_read_nonlocal.F
198!||====================================================================
199 SUBROUTINE get_length(NLOC_LENGTH,LE_MAX)
200#include "implicit_f.inc"
201 my_real, INTENT(IN) :: le_max
202 my_real, INTENT(OUT) :: nloc_length
203 nloc_length = three*le_max/sqrt(pi)
204 END SUBROUTINE get_length
205c=======================================================================
206 END MODULE nlocal_reg_mod
subroutine cbavarnl(jft, jlt, ng, ixc, nloc_dmg, varnl, nddl, nc1, nc2, nc3, nc4, nel)
Definition cbavarnl.F:33
subroutine cfint_reg(nloc_dmg, var_reg, thk, nel, off, area, nc1, nc2, nc3, nc4, px1, py1, px2, py2, bufnl, imat, nddl, itask, dt2t, le, thk0, area0, nft)
Definition cfint_reg.F:39
#define my_real
Definition cppsort.cpp:32
subroutine get_lemax(le_max, nloc_length)
subroutine get_length(nloc_length, le_max)
subroutine rdresb(af, iaf, lvarrea, irunn, multi_fvm, h3d_data, pinch_data, ale_connectivity, t_monvol, sensors, ebcs_tab, dynain_data, user_windows, output, interfaces, loads, mat_elem, python, iflow, skews, rflow, liflow, lrflow, impl_s0, forneqs, unitab, stack, drape_sh4n, drape_sh3n, drapeg, ndrape, glob_therm, pblast, element, nodes, rbe3)
Definition rdresb.F:159
program starter
Definition starter.F:39
subroutine updmat(bufmat, pm, ipm, table, func_id, npc, pld, sensors, nloc_dmg, mlaw_tag, mat_param)
Definition updmat.F:78