OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
read_nloc_struct.F File Reference
#include "implicit_f.inc"
#include "parit_c.inc"
#include "task_c.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "scr02_c.inc"
#include "rad2r_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine read_nloc_struct (nloc_dmg)

Function/Subroutine Documentation

◆ read_nloc_struct()

subroutine read_nloc_struct ( type (nlocal_str_), target nloc_dmg)

Definition at line 33 of file read_nloc_struct.F.

34C-----------------------------------------------
35C M o d u l e s
36C-----------------------------------------------
38C-----------------------------------------------
39C I m p l i c i t T y p e s
40C-----------------------------------------------
41#include "implicit_f.inc"
42#include "parit_c.inc"
43#include "task_c.inc"
44C-----------------------------------------------
45C C o m m o n B l o c k s
46C-----------------------------------------------
47#include "com01_c.inc"
48#include "com04_c.inc"
49#include "scr02_c.inc"
50#include "rad2r_c.inc"
51C-----------------------------------------------
52C D u m m y A r g u m e n t s
53C-----------------------------------------------
54 TYPE (NLOCAL_STR_),TARGET :: NLOC_DMG
55C-----------------------------------------------
56C L o c a l V a r i a b l e s
57C-----------------------------------------------
58 INTEGER I,ILOC,NNOD,L_NLOC,NUMELS_NL,NUMELC_NL,NDDMAX,
59 . NUMELTG_NL,LCNE_NL,MATSIZE
60 my_real, DIMENSION(:), POINTER :: fnl,stifnl
61 INTEGER, DIMENSION(8) ::
62 . HEAD
63C=======================================================================
64c
65c------- read NLOC_DMG data
66c
67 CALL read_i_c(head,8)
68 iloc = head(1)
69 nnod = head(2)
70 l_nloc = head(3)
71 numels_nl = head(4)
72 numelc_nl = head(5)
73 numeltg_nl = head(6)
74 nddmax = head(7)
75 lcne_nl = head(8)
76 nloc_dmg%IMOD = iloc
77 nloc_dmg%NNOD = nnod
78 nloc_dmg%L_NLOC = l_nloc
79 nloc_dmg%NUMELS_NL = numels_nl
80 nloc_dmg%NUMELC_NL = numelc_nl
81 nloc_dmg%NUMELTG_NL = numeltg_nl
82 nloc_dmg%NDDMAX = nddmax
83 nloc_dmg%LCNE_NL = lcne_nl
84c
85 IF (iloc > 0) THEN
86c
87 IF (r2r_siu > 0) THEN
88C-- multidomains - original nummat is used
89 matsize = nummat0
90 ELSE
91 matsize = nummat
92 ENDIF
93c
94 ALLOCATE (nloc_dmg%LEN(matsize))
95 ALLOCATE (nloc_dmg%LE_MAX(matsize))
96 ALLOCATE (nloc_dmg%DENS(matsize))
97 ALLOCATE (nloc_dmg%DAMP(matsize))
98 ALLOCATE (nloc_dmg%SSPNL(matsize))
99 ALLOCATE (nloc_dmg%INDX(nnod))
100 ALLOCATE (nloc_dmg%POSI(nnod+1))
101 ALLOCATE (nloc_dmg%IDXI(numnod))
102 ALLOCATE (nloc_dmg%MASS(l_nloc))
103 ALLOCATE (nloc_dmg%MASS0(l_nloc))
104 ALLOCATE (nloc_dmg%VNL(l_nloc))
105 ALLOCATE (nloc_dmg%VNL_OLD(l_nloc))
106 ALLOCATE (nloc_dmg%DNL(l_nloc))
107 ALLOCATE (nloc_dmg%UNL(l_nloc))
108 ALLOCATE (nloc_dmg%CNE(0))
109c
110 ! If starter PARITH/ON
111 IF (ipari0 == 1) THEN
112 ALLOCATE (nloc_dmg%ADDCNE(nnod+1))
113 ALLOCATE (nloc_dmg%PROCNE(lcne_nl))
114 ALLOCATE (nloc_dmg%IADS(8,numels_nl))
115 ALLOCATE (nloc_dmg%IADC(4,numelc_nl))
116 ALLOCATE (nloc_dmg%IADTG(3,numeltg_nl))
117c
118 ! If starter PARITH/OFF
119 ELSE
120 ALLOCATE (nloc_dmg%ADDCNE(0))
121 ALLOCATE (nloc_dmg%PROCNE(0))
122 ALLOCATE (nloc_dmg%IADS(0,0))
123 ALLOCATE (nloc_dmg%IADC(0,0))
124 ALLOCATE (nloc_dmg%IADTG(0,0))
125 ALLOCATE (nloc_dmg%FSKY(0,0))
126 ALLOCATE (nloc_dmg%STSKY(0,0))
127 ENDIF
128c
129 ! If engine PARITH/ON
130 IF (iparit == 1) THEN
131 ALLOCATE (nloc_dmg%FNL(l_nloc,1))
132 nloc_dmg%FNL(1:l_nloc,1) = zero
133 ! Non-local nodal stiffness
134 IF (nodadt > 0) THEN
135 ALLOCATE (nloc_dmg%STIFNL(l_nloc,1))
136 nloc_dmg%STIFNL(1:l_nloc,1) = zero
137 ELSE
138 ALLOCATE (nloc_dmg%STIFNL(0,0))
139 ENDIF
140 ! If engine PARITH/OFF
141 ELSE
142 ALLOCATE (nloc_dmg%FNL(l_nloc,nthread))
143 nloc_dmg%FNL(1:l_nloc,1:nthread) = zero
144 ! Non-local nodal stiffness
145 IF (nodadt > 0) THEN
146 ALLOCATE (nloc_dmg%STIFNL(l_nloc,nthread))
147 nloc_dmg%STIFNL(1:l_nloc,1:nthread) = zero
148 ELSE
149 ALLOCATE (nloc_dmg%STIFNL(0,0))
150 ENDIF
151 ENDIF
152c
153 CALL read_db(nloc_dmg%DENS,matsize)
154c
155 CALL read_db(nloc_dmg%DAMP,matsize)
156c
157 CALL read_db(nloc_dmg%LEN,matsize)
158c
159 CALL read_db(nloc_dmg%LE_MAX,matsize)
160c
161 CALL read_db(nloc_dmg%SSPNL,matsize)
162c
163 CALL read_i_c(nloc_dmg%INDX,nnod)
164c
165 CALL read_i_c(nloc_dmg%POSI,nnod+1)
166c
167 CALL read_i_c(nloc_dmg%IDXI,numnod)
168c
169 ! If starter PARITH/ON, reading pointers and allocation of the FSKY vector
170 IF (ipari0 == 1) THEN
171c
172 ! ADDCNE table
173 CALL read_i_c(nloc_dmg%ADDCNE,nnod+1)
174c
175 ! PROCNE table
176 CALL read_i_c(nloc_dmg%PROCNE,lcne_nl)
177c
178 ! IADS table
179 CALL read_i_c(nloc_dmg%IADS,8*numels_nl)
180c
181 ! IADC table
182 CALL read_i_c(nloc_dmg%IADC,4*numelc_nl)
183c
184 ! IADTG table
185 CALL read_i_c(nloc_dmg%IADTG,3*numeltg_nl)
186c
187 ! FSKY vector
188 ALLOCATE (nloc_dmg%FSKY(nloc_dmg%ADDCNE(nnod+1),nddmax))
189 nloc_dmg%FSKY(1:nloc_dmg%ADDCNE(nnod+1),1:nddmax) = zero
190c
191 ! STSKY vector
192 IF (nodadt > 0) THEN
193 ALLOCATE (nloc_dmg%STSKY(nloc_dmg%ADDCNE(nnod+1),nddmax))
194 nloc_dmg%STSKY(1:nloc_dmg%ADDCNE(nnod+1),1:nddmax) = zero
195 ELSE
196 ALLOCATE (nloc_dmg%STSKY(0,0))
197 ENDIF
198c
199 ENDIF
200c
201 CALL read_db(nloc_dmg%MASS,l_nloc)
202c
203 CALL read_db(nloc_dmg%MASS0,l_nloc)
204c
205 fnl => nloc_dmg%FNL(1:l_nloc,1)
206 CALL read_db(fnl,l_nloc)
207c
208 CALL read_db(nloc_dmg%VNL,l_nloc)
209c
210 CALL read_db(nloc_dmg%VNL_OLD,l_nloc)
211c
212 CALL read_db(nloc_dmg%DNL,l_nloc)
213c
214 CALL read_db(nloc_dmg%UNL,l_nloc)
215c
216 ELSE
217 nloc_dmg%NNOD = 0
218 nloc_dmg%L_NLOC = 0
219 nloc_dmg%NUMELS_NL = 0
220 nloc_dmg%NUMELC_NL = 0
221 nloc_dmg%NUMELTG_NL = 0
222 nloc_dmg%NDDMAX = 0
223 nloc_dmg%LCNE_NL = 0
224 ALLOCATE (nloc_dmg%DENS(0))
225 ALLOCATE (nloc_dmg%DAMP(0))
226 ALLOCATE (nloc_dmg%LEN(0))
227 ALLOCATE (nloc_dmg%LE_MAX(0))
228 ALLOCATE (nloc_dmg%SSPNL(0))
229 ALLOCATE (nloc_dmg%INDX(0))
230 ALLOCATE (nloc_dmg%POSI(0))
231 ALLOCATE (nloc_dmg%IDXI(0))
232 ALLOCATE (nloc_dmg%ADDCNE(0))
233 ALLOCATE (nloc_dmg%CNE(0))
234 ALLOCATE (nloc_dmg%PROCNE(0))
235 ALLOCATE (nloc_dmg%IADS(0,0))
236 ALLOCATE (nloc_dmg%IADC(0,0))
237 ALLOCATE (nloc_dmg%IADTG(0,0))
238 ALLOCATE (nloc_dmg%MASS(0))
239 ALLOCATE (nloc_dmg%MASS0(0))
240 ALLOCATE (nloc_dmg%FNL(0,0))
241 ALLOCATE (nloc_dmg%VNL(0))
242 ALLOCATE (nloc_dmg%VNL_OLD(0))
243 ALLOCATE (nloc_dmg%DNL(0))
244 ALLOCATE (nloc_dmg%UNL(0))
245 ALLOCATE (nloc_dmg%STIFNL(0,0))
246 ALLOCATE (nloc_dmg%FSKY(0,0))
247 ALLOCATE (nloc_dmg%STSKY(0,0))
248 ALLOCATE (nloc_dmg%IAD_ELEM(0))
249 ALLOCATE (nloc_dmg%IAD_SIZE(0))
250 ALLOCATE (nloc_dmg%FR_ELEM(0))
251 ENDIF
252c-----------
253 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine read_db(a, n)
Definition read_db.F:88
void read_i_c(int *w, int *len)