OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
h3d_sol_skin_scalar.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!|| h3d_sol_skin_scalar ../engine/source/output/h3d/h3d_results/h3d_sol_skin_scalar.F
25!||--- called by ------------------------------------------------------
26!|| h3d_skin_scalar ../engine/source/output/h3d/h3d_results/h3d_skin_scalar.F
27!||--- calls -----------------------------------------------------
28!|| gpsstrain_skin ../engine/source/output/anim/generate/tensgpstrain.F
29!|| h3d_sol_skin_scalar1 ../engine/source/output/h3d/h3d_results/h3d_sol_skin_scalar1.F
30!|| spmd_exch_nodarea2 ../engine/source/mpi/anim/spmd_exch_nodarea2.F
31!|| spmd_exch_nodareai ../engine/source/mpi/anim/spmd_exch_nodareai.f
32!||--- uses -----------------------------------------------------
33!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.f90
34!|| initbuf_mod ../engine/share/resol/initbuf.F
35!|| mat_elem_mod ../common_source/modules/mat_elem/mat_elem_mod.F90
36!|| names_and_titles_mod ../common_source/modules/names_and_titles_mod.F
37!||====================================================================
39 . ELBUF_TAB,SKIN_SCALAR, IPARG ,IXS ,X ,PM ,
40 4 IPARTS ,IGEO ,IXS10 ,IXS16 , IXS20 ,
41 5 IS_WRITTEN_SKIN ,H3D_PART,INFO1 ,KEYWORD ,NSKIN ,
42 6 IAD_ELEM ,FR_ELEM , WEIGHT , TAG_SKINS6,
43 7 NPF ,TF ,MAT_PARAM)
44C-----------------------------------------------
45C M o d u l e s
46C-----------------------------------------------
47 USE initbuf_mod
48 USE mat_elem_mod
49 USE elbufdef_mod
51C-----------------------------------------------
52C I m p l i c i t T y p e s
53C-----------------------------------------------
54#include "implicit_f.inc"
55C-----------------------------------------------
56C C o m m o n B l o c k s
57C-----------------------------------------------
58#include "com01_c.inc"
59#include "com04_c.inc"
60#include "param_c.inc"
61C-----------------------------------------------
62C D u m m y A r g u m e n t s
63C-----------------------------------------------
64C REAL
66 . skin_scalar(*),pm(npropm,*), x(3,*),tf(*)
67 INTEGER IPARG(NPARG,*),
68 . IXS(NIXS,*),IPARTS(*),
69 . IXS10(6,*) ,IXS16(8,*) ,IXS20(12,*) ,
70 . igeo(npropgi,*),is_written_skin(*),npf(*),
71 . h3d_part(*),info1,nskin,tag_skins6(*),iad_elem(2,*),fr_elem(*),weight(*)
72 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
73 CHARACTER(LEN=NCHARLINE100)::KEYWORD
74 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(IN) :: MAT_PARAM
75C-----------------------------------------------
76C L o c a l V a r i a b l e s
77C-----------------------------------------------
78 INTEGER I,I1,II,J,LENR,NEL,NFT,N
79
80 INTEGER JJ,N1,N2
81 INTEGER, DIMENSION(:), ALLOCATABLE :: ITAGPS,TAG_SKIN_ND
82 my_real
83 . , DIMENSION(:,:), ALLOCATABLE :: aflu, vflu,t6gps
84 INTEGER FACES(4,6),NS,K1,PWR(7),LL
85 DATA pwr/1,2,4,8,16,32,64/
86 DATA faces/4,3,2,1,
87 . 5,6,7,8,
88 . 1,2,6,5,
89 . 3,4,8,7,
90 . 2,3,7,6,
91 . 1,5,8,4/
92C-----------------------------------------------
93C
94 ALLOCATE(aflu(3,numnod),vflu(3,numnod),t6gps(6,numnod))
95 ALLOCATE(itagps(numnod),tag_skin_nd(numnod))
96 aflu = zero
97 vflu = zero
98 t6gps = zero
99 itagps = 0
100C------TAG_SKIN_ND only the big seg(mid-node of S10 not include)
101 tag_skin_nd = 0
102 DO i=1,numels
103 ll=tag_skins6(i)
104 DO jj=1,6
105 IF(mod(ll,pwr(jj+1))/pwr(jj) /= 0)cycle
106 DO k1=1,4
107 ns=ixs(faces(k1,jj)+1,i)
108 tag_skin_nd(ns) = 1
109 END DO
110 END DO
111 END DO
112 IF (keyword == 'FLDZ/OUTER' .OR. keyword == 'FLDF/OUTER') THEN
113 CALL gpsstrain_skin(elbuf_tab,vflu ,aflu ,iparg ,
114 . ixs ,ixs10 ,ixs16 ,ixs20 ,x ,
115 . itagps ,pm ,tag_skin_nd )
116 IF(nspmd > 1)THEN
117 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
118 CALL spmd_exch_nodareai(itagps,iad_elem,fr_elem,lenr,weight)
119 DO j=1,3
120 CALL spmd_exch_nodarea2(vflu,iad_elem,fr_elem,lenr,weight,j)
121 CALL spmd_exch_nodarea2(aflu,iad_elem,fr_elem,lenr,weight,j)
122 ENDDO
123 ENDIF
124 DO n=1,numnod
125 IF (itagps(n)>0) t6gps(1:3,n)=vflu(1:3,n)/itagps(n)
126 ENDDO
127C------------change shear to eij
128 DO n=1,numnod
129 IF (itagps(n)>0) t6gps(4:6,n)=half*aflu(1:3,n)/itagps(n)
130 ENDDO
131 END IF
132C
133 CALL h3d_sol_skin_scalar1(elbuf_tab,iparg,iparts,ixs,ixs10,
134 . skin_scalar,tag_skins6,t6gps,x ,
135 . npf,tf,h3d_part,is_written_skin,
136 . keyword,nskin,mat_param)
137C
138 DEALLOCATE(aflu,vflu,t6gps,itagps,tag_skin_nd)
139C-----------
140 RETURN
141 END
142!||====================================================================
143!|| idx_fld_sol ../engine/source/output/h3d/h3d_results/h3d_sol_skin_scalar.F
144!||--- called by ------------------------------------------------------
145!|| h3d_sol_skin_scalar1 ../engine/source/output/h3d/h3d_results/h3d_sol_skin_scalar1.F
146!||--- calls -----------------------------------------------------
147!|| finter ../engine/source/tools/curve/finter.F
148!|| finterfld ../engine/source/materials/fail/fld/fail_fld_c.F
149!||====================================================================
150 SUBROUTINE idx_fld_sol(
151 1 NEL ,NUPARAM ,NFUNC ,IFUNC ,
152 2 NPF ,TF ,UPARAM ,EPS3 ,FLD_IDX ,
153 3 NIPARAM ,IPARAM ,PLA )
154C-----------------------------------------------
155c FLD failure model
156C-----------------------------------------------
157C I m p l i c i t T y p e s
158C-----------------------------------------------
159#include "implicit_f.inc"
160C-----------------------------------------------
161C G l o b a l P a r a m e t e r s
162C-----------------------------------------------
163C---------+---------+---+---+--------------------------------------------
164C VAR | SIZE |TYP| RW| DEFINITION
165C---------+---------+---+---+--------------------------------------------
166C NEL | 1 | I | R | SIZE OF THE ELEMENT GROUP NEL
167C NUPARAM | 1 | I | R | SIZE OF THE USER PARAMETER ARRAY
168C UPARAM | NUPARAM | F | R | USER MATERIAL PARAMETER ARRAY
169C---------+---------+---+---+--------------------------------------------
170C---------+---------+---+---+--------------------------------------------
171C EPS3 | NEL*3 | F | R | IN PLANE STRAIN TENSOR
172C---------+---------+---+---+--------------------------------------------
173C---------+---------+---+---+--------------------------------------------
174C I N P U T A r g u m e n t s
175C-----------------------------------------------
176 INTEGER, INTENT(IN) :: NEL,NUPARAM,NFUNC,NIPARAM
177 INTEGER ,DIMENSION(NFUNC) :: IFUNC
178 INTEGER, DIMENSION(NIPARAM), INTENT(IN) :: IPARAM
179 my_real ,DIMENSION(3,NEL), INTENT(IN) :: EPS3
180 my_real,DIMENSION(NUPARAM) :: UPARAM
181 my_real ,DIMENSION(NEL), INTENT(IN) :: PLA
182C-----------------------------------------------
183C I N P U T O U T P U T A r g u m e n t s
184C-----------------------------------------------
185 my_real ,DIMENSION(NEL), INTENT(INOUT) :: fld_idx
186C-----------------------------------------------
187C VARIABLES FOR FUNCTION INTERPOLATION
188C-----------------------------------------------
189 INTEGER NPF(*)
190 my_real FINTER , FINTERFLD ,TF(*)
191 EXTERNAL FINTER
192C Y = FINTER(IFUNC(J),X,NPF,TF,DYDX)
193C Y : y = f(x)
194C X : x
195C DYDX : f'(x) = dy/dx
196C IFUNC(J): FUNCTION INDEX
197C J : FIRST(J=1), SECOND(J=2) .. FUNCTION USED FOR THIS LAW
198C NPF,TF : FUNCTION PARAMETER
199C-----------------------------------------------
200C L o c a l V a r i a b l e s
201C-----------------------------------------------
202 INTEGER :: I,II,J,IENG,LENF,NINDX,IMARGIN
203 my_real :: RANI,R1,R2,S1,S2,SS,Q,DYDX,E12,FACT_MARGIN,FACT_LOOSEMETAL
204 my_real ,ALLOCATABLE, DIMENSION(:) :: XF
205 my_real ,DIMENSION(NEL) :: EMAJ,EMIN,EM,BETA
206C=======================================================================
207c
208 ! -> Real parameters
209 FACT_MARGIN = uparam(1)
210 rani = uparam(3)
211 fact_loosemetal = uparam(4)
212 ! -> Integer parameters
213 imargin = iparam(2)
214 ieng = iparam(3)
215c
216 !=================================================================
217 ! - MINOR AND MAJOR (TRUE) STRAIN DEFORMATION
218 !=================================================================
219 DO i = 1,nel
220 e12= eps3(3,i)
221 s1 = half*(eps3(1,i) + eps3(2,i))
222 s2 = half*(eps3(1,i) - eps3(2,i))
223 q = sqrt(s2**2 + e12**2)
224 emaj(i) = s1 + q
225 emin(i) = s1 - q
226 IF (emin(i) >= emaj(i)) THEN
227 ss = emin(i)
228 emin(i) = emaj(i)
229 emaj(i) = ss
230 ENDIF
231 beta(i) = emin(i)/max(emaj(i),em20)
232 ENDDO
233c
234 !=================================================================
235 ! FAILURE MAJOR STRAIN FROM INPUT CURVE AND DAMAGE RATIO
236 !=================================================================
237 ! -> Engineering strains input
238 IF (ieng == 1) THEN ! transform input fld curve to true strain
239 ii = npf(ifunc(1))
240 lenf = npf(ifunc(1)+ 1) - npf(ifunc(1))
241 ALLOCATE(xf(lenf))
242 DO i = 1,lenf
243 xf(i) = log(tf(ii + i-1) + one)
244 ENDDO
245c
246 DO i = 1,nel
247 em(i) = finterfld(emin(i),lenf,xf)
248 ENDDO
249 DEALLOCATE(xf)
250 ! -> True strains input
251 ELSE
252 ! -> Classical formulation
253 IF (ieng == 0) THEN
254 DO i = 1,nel
255 em(i) = finter(ifunc(1),emin(i),npf,tf,dydx)
256 ENDDO
257 ! -> Non-linear path formulation
258 ELSEIF (ieng == 2) THEN
259 DO i = 1,nel
260 em(i) = finter(ifunc(1),beta(i),npf,tf,dydx)
261 ENDDO
262 ENDIF
263 ENDIF
264c
265 !=================================================================
266 ! FLD ZONE INDEX CALCULATION FOR ANIM OUTPUT
267 !=================================================================
268 r1 = fact_loosemetal
269 r2 = rani/(rani+one)
270
271 IF (ieng < 2) THEN
272 IF (imargin == 3) THEN
273 DO i = 1,nel
274 IF (emaj(i) >= em(i)) THEN
275 fld_idx(i) = 6 ! zone 6 = failure
276 ELSEIF (emaj(i) >= em(i)*(one - fact_margin)) THEN
277 fld_idx(i) = 5 ! zone 5 = margin to fail
278 ELSEIF (emaj(i)**2 + emin(i)**2 < r1**2) THEN
279 fld_idx(i) = 1 ! zone 1 = radius 0.02
280 ELSEIF (emaj(i) >= abs(emin(i))) THEN
281 fld_idx(i) = 4 ! zone 4 = safe (45 deg line)
282 ELSEIF (emaj(i) >= r2*abs(emin(i))) THEN
283 fld_idx(i) = 3 ! zone 3 = angle atan(r/(1+r)) - compression
284 ELSE
285 fld_idx(i) = 2 ! zone 2 - high wrinkle tendency
286 ENDIF
287 ENDDO
288 ELSE
289 DO i = 1,nel
290 IF (emaj(i) >= em(i)) THEN
291 fld_idx(i) = 6 ! zone 6 = failure
292 ELSEIF (emaj(i) >= em(i) - fact_margin) THEN
293 fld_idx(i) = 5 ! zone 5 = margin to fail
294 ELSEIF (emaj(i)**2 + emin(i)**2 < r1**2) THEN
295 fld_idx(i) = 1 ! zone 1 = radius 0.02
296 ELSEIF (emaj(i) >= abs(emin(i))) THEN
297 fld_idx(i) = 4 ! zone 4 = safe (45 deg line)
298 ELSEIF (emaj(i) >= r2*abs(emin(i))) THEN
299 fld_idx(i) = 3 ! zone 3 = angle atan(r/(1+r)) - compression
300 ELSE
301 fld_idx(i) = 2 ! zone 2 - high wrinkle tendency
302 ENDIF
303 ENDDO
304 ENDIF
305 ELSE
306 IF (imargin == 3) THEN
307 DO i = 1,nel
308 IF (pla(i) >= em(i)) THEN
309 fld_idx(i) = 6 ! zone 6 = failure
310 ELSEIF (pla(i) >= em(i)*(one - fact_margin)) THEN
311 fld_idx(i) = 5 ! zone 5 = margin to fail
312 ELSEIF (pla(i)**2 + beta(i)**2 < r1**2) THEN
313 fld_idx(i) = 1 ! zone 1 = radius 0.02
314 ELSEIF (pla(i) >= abs(beta(i))) THEN
315 fld_idx(i) = 4 ! zone 4 = safe (45 deg line)
316 ELSEIF (pla(i) >= r2*abs(beta(i))) THEN
317 fld_idx(i) = 3 ! zone 3 = angle atan(r/(1+r)) - compression
318 ELSE
319 fld_idx(i) = 2 ! zone 2 - high wrinkle tendency
320 ENDIF
321 ENDDO
322 ELSE
323 DO i = 1,nel
324 IF (pla(i) >= em(i)) THEN
325 fld_idx(i) = 6 ! zone 6 = failure
326 ELSEIF (pla(i) >= em(i) - fact_margin) THEN
327 fld_idx(i) = 5 ! zone 5 = margin to fail
328 ELSEIF (pla(i)**2 + beta(i)**2 < r1**2) THEN
329 fld_idx(i) = 1 ! zone 1 = radius 0.02
330 ELSEIF (pla(i) >= abs(beta(i))) THEN
331 fld_idx(i) = 4 ! zone 4 = safe (45 deg line)
332 ELSEIF (pla(i) >= r2*abs(beta(i))) THEN
333 fld_idx(i) = 3 ! zone 3 = angle atan(r/(1+r)) - compression
334 ELSE
335 fld_idx(i) = 2 ! zone 2 - high wrinkle tendency
336 ENDIF
337 ENDDO
338 ENDIF
339 ENDIF
340C------------------------
341 RETURN
342 END
343!||====================================================================
344!|| dam_fld_sol ../engine/source/output/h3d/h3d_results/h3d_sol_skin_scalar.F
345!||--- called by ------------------------------------------------------
346!|| h3d_sol_skin_scalar1 ../engine/source/output/h3d/h3d_results/h3d_sol_skin_scalar1.F
347!||--- calls -----------------------------------------------------
348!|| finter ../engine/source/tools/curve/finter.F
349!|| finterfld ../engine/source/materials/fail/fld/fail_fld_c.F
350!||====================================================================
351 SUBROUTINE dam_fld_sol(
352 1 NEL ,NUPARAM ,NFUNC ,IFUNC ,
353 2 NPF ,TF ,UPARAM ,EPS3 ,DAM,
354 3 NIPARAM ,IPARAM ,PLA )
355C-----------------------------------------------
356c FLD failure model
357C-----------------------------------------------
358C I m p l i c i t T y p e s
359C-----------------------------------------------
360#include "implicit_f.inc"
361C-----------------------------------------------
362C G l o b a l P a r a m e t e r s
363C-----------------------------------------------
364C---------+---------+---+---+--------------------------------------------
365C VAR | SIZE |TYP| RW| DEFINITION
366C---------+---------+---+---+--------------------------------------------
367C NEL | 1 | I | R | SIZE OF THE ELEMENT GROUP NEL
368C NUPARAM | 1 | I | R | SIZE OF THE USER PARAMETER ARRAY
369C UPARAM | NUPARAM | F | R | USER MATERIAL PARAMETER ARRAY
370C---------+---------+---+---+--------------------------------------------
371C EPS3 | NEL*3 | F | R | IN PLANE STRAIN TENSOR
372C---------+---------+---+---+--------------------------------------------
373C OFF | NEL | F | R | DELETED ELEMENT FLAG (=1. ON, =0. OFF)
374C FOFF | NEL | I |R/W| DELETED INTEGRATION POINT FLAG (=1 ON, =0 OFF)
375C DAM | NEL | F |R/W| DAMAGE FACTOR
376C---------+---------+---+---+--------------------------------------------
377C---------+---------+---+---+--------------------------------------------
378C I N P U T A r g u m e n t s
379C-----------------------------------------------
380 INTEGER, INTENT(IN) :: NEL,NUPARAM,NFUNC,NIPARAM
381 INTEGER ,DIMENSION(NFUNC) :: IFUNC
382 INTEGER, DIMENSION(NIPARAM), INTENT(IN) :: IPARAM
383 my_real ,DIMENSION(3,NEL), INTENT(IN) :: EPS3
384 my_real,DIMENSION(NUPARAM) :: UPARAM
385 my_real ,DIMENSION(NEL), INTENT(IN) :: PLA
386C-----------------------------------------------
387C I N P U T O U T P U T A r g u m e n t s
388C-----------------------------------------------
389 my_real ,DIMENSION(NEL), INTENT(OUT) :: DAM
390C-----------------------------------------------
391C VARIABLES FOR FUNCTION INTERPOLATION
392C-----------------------------------------------
393 INTEGER NPF(*)
394 my_real finter , finterfld ,tf(*)
395 EXTERNAL finter
396C Y = FINTER(IFUNC(J),X,NPF,TF,DYDX)
397C Y : y = f(x)
398C X : x
399C DYDX : f'(x) = dy/dx
400C IFUNC(J): FUNCTION INDEX
401C J : FIRST(J=1), SECOND(J=2) .. FUNCTION USED FOR THIS LAW
402C NPF,TF : FUNCTION PARAMETER
403C-----------------------------------------------
404C L o c a l V a r i a b l e s
405C-----------------------------------------------
406 INTEGER :: I,II,J,IENG,LENF,NINDX,IMARGIN
407 my_real :: RANI,R1,R2,S1,S2,SS,Q,DYDX,E12,FACT_MARGIN,FACT_LOOSEMETAL
408 my_real ,ALLOCATABLE, DIMENSION(:) :: XF
409 my_real ,DIMENSION(NEL) :: EMAJ,EMIN,EM,BETA
410C=======================================================================
411c
412 ! -> Real parameters
413 FACT_MARGIN = uparam(1)
414 rani = uparam(3)
415 fact_loosemetal = uparam(4)
416 ! -> Integer parameters
417 imargin = iparam(2)
418 ieng = iparam(3)
419c
420 !=================================================================
421 ! - MINOR AND MAJOR (TRUE) STRAIN DEFORMATION
422 !=================================================================
423 DO i = 1,nel
424 e12= eps3(3,i)
425 s1 = half*(eps3(1,i) + eps3(2,i))
426 s2 = half*(eps3(1,i) - eps3(2,i))
427 q = sqrt(s2**2 + e12**2)
428 emaj(i) = s1 + q
429 emin(i) = s1 - q
430 IF (emin(i) >= emaj(i)) THEN
431 ss = emin(i)
432 emin(i) = emaj(i)
433 emaj(i) = ss
434 ENDIF
435 beta(i) = emin(i)/max(emaj(i),em20)
436 ENDDO
437c
438 !=================================================================
439 ! FAILURE MAJOR STRAIN FROM INPUT CURVE AND DAMAGE RATIO
440 !=================================================================
441 ! -> Engineering strains input
442 IF (ieng == 1) THEN ! transform input fld curve to true strain
443 ii = npf(ifunc(1))
444 lenf = npf(ifunc(1)+ 1) - npf(ifunc(1))
445 ALLOCATE(xf(lenf))
446 DO i = 1,lenf
447 xf(i) = log(tf(ii + i-1) + one)
448 ENDDO
449c
450 DO i = 1,nel
451 em(i) = finterfld(emin(i),lenf,xf)
452 dam(i) = emaj(i) / em(i)
453c DFMAX(I) = MIN(ONE, DAM(I))
454 ENDDO
455 DEALLOCATE(xf)
456 ! -> True strains input
457 ELSE
458 ! -> Classical formulation
459 IF (ieng == 0) THEN
460 DO i = 1,nel
461 em(i) = finter(ifunc(1),emin(i),npf,tf,dydx)
462 dam(i) = emaj(i) / em(i)
463 ENDDO
464 ! -> Non-linear path formulation
465 ELSEIF (ieng == 2) THEN
466 DO i = 1,nel
467 em(i) = finter(ifunc(1),beta(i),npf,tf,dydx)
468 dam(i) = pla(i) / em(i)
469 ENDDO
470 ENDIF
471 ENDIF
472C------------------------
473 RETURN
474 END
475
#define my_real
Definition cppsort.cpp:32
subroutine h3d_sol_skin_scalar1(elbuf_tab, iparg, iparts, ixs, ixs10, skin_scalar, tag_skins6, t6gps, x, npf, tf, h3d_part, is_written_skin, keyword, nskin, mat_param)
subroutine idx_fld_sol(nel, nuparam, nfunc, ifunc, npf, tf, uparam, eps3, fld_idx, niparam, iparam, pla)
subroutine dam_fld_sol(nel, nuparam, nfunc, ifunc, npf, tf, uparam, eps3, dam, niparam, iparam, pla)
subroutine h3d_sol_skin_scalar(elbuf_tab, skin_scalar, iparg, ixs, x, pm, iparts, igeo, ixs10, ixs16, ixs20, is_written_skin, h3d_part, info1, keyword, nskin, iad_elem, fr_elem, weight, tag_skins6, npf, tf, mat_param)
#define max(a, b)
Definition macros.h:21
integer, parameter ncharline100
subroutine spmd_exch_nodarea2(nodarea, iad_elem, fr_elem, lenr, weight, jj)
subroutine spmd_exch_nodareai(nodareai, iad_elem, fr_elem, lenr, weight)
subroutine gpsstrain_skin(elbuf_tab, func1, func2, iparg, ixs, ixs10, ixs16, ixs20, x, itagps, pm, tag_skin_nd)