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