OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
assadd2.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/.
23C finalisation parith/on spmd (1ere partie effectuee dans Starter)
24!||====================================================================
25!|| assadd2 ../engine/source/assembly/assadd2.F
26!||--- called by ------------------------------------------------------
27!|| resol_init ../engine/source/engine/resol_init.F
28!||--- calls -----------------------------------------------------
29!|| my_orders ../common_source/tools/sort/my_orders.c
30!||--- uses -----------------------------------------------------
31!|| glob_therm_mod ../common_source/modules/mat_elem/glob_therm_mod.F90
32!|| my_alloc_mod ../common_source/tools/memory/my_alloc.F90
33!||====================================================================
34 SUBROUTINE assadd2(ADDCNE ,INDSKY ,FSKY ,FSKYM ,IAD_ELEM ,
35 2 FR_ELEM ,FR_NBCC ,PROCNE,NISKYFI ,ADDCNI2 ,
36 3 PROCNI2 ,IAD_I2M ,FR_I2M,FR_NBCCI2,INDSKYI2 ,
37 4 IADSDP ,IADRCP ,ISENDP,IRECVP ,FTHESKY ,
38 5 NISKYFIE,INOD_PXFEM,ADDCNE_PXFEM,PROCNE_PXFEM,
39 6 ISENDP_PXFEM,IRECVP_PXFEM ,IADSDP_PXFEM,IADRCP_PXFEM,
40 7 FR_NBCC1 ,INOD_CRKXFEM,ADDCNE_CRKXFEM,PROCNE_CRKXFEM,
41 8 ISENDP_CRKXFEM,IRECVP_CRKXFEM,IADSDP_CRKXFEM,IADRCP_CRKXFEM,
42 9 CONDNSKY,GLOB_THERM)
43C-----------------------------------------------
44C M o d u l e s
45C-----------------------------------------------
46 use glob_therm_mod
47 use my_alloc_mod
48C-----------------------------------------------
49C I m p l i c i t T y p e s
50C-----------------------------------------------
51#include "implicit_f.inc"
52C-----------------------------------------------
53C C o m m o n B l o c k s
54C-----------------------------------------------
55#include "com01_c.inc"
56#include "com04_c.inc"
57#include "com08_c.inc"
58#include "com_xfem1.inc"
59#include "parit_c.inc"
60#include "units_c.inc"
61#include "task_c.inc"
62#include "spmd_c.inc"
63#include "scr18_c.inc"
64 INTEGER MAXBLOC,NBLOC,NBVAL,NBCOL
65 PARAMETER (MAXBLOC=1000)
66 common/ptmparit/nbloc,nbval(1:maxbloc),nbcol(1:maxbloc)
67 INTEGER MAXBLOCI2,NBLOCI2,NBVALI2,NBCOLI2
68 PARAMETER (MAXBLOCI2=1000)
69 common/ptmpari2/nbloci2,nbvali2(1:maxbloci2),nbcoli2(1:maxbloci2)
70C-----------------------------------------------------------------
71C D u m m y A r g u m e n t s
72C-----------------------------------------------
73 INTEGER INDSKY(*),ADDCNE(*),IAD_ELEM(2,*),FR_NBCC(2,*),
74 . procne(*),fr_elem(*), niskyfi(*), addcni2(*),niskyfie(*),
75 . procni2(*), iad_i2m(*), fr_i2m(*), fr_nbcci2(2,*),
76 . indskyi2(*), iadsdp(*), iadrcp(*), isendp(*), irecvp(*),
77 . procne_pxfem(*),isendp_pxfem(*),irecvp_pxfem(*),
78 . iadsdp_pxfem(*),iadrcp_pxfem(*),fr_nbcc1(2,*),
79 . addcne_pxfem(*),inod_pxfem(*),addcne_crkxfem(*),
80 . inod_crkxfem(*),procne_crkxfem(*),isendp_crkxfem(*),
81 . irecvp_crkxfem(*),iadsdp_crkxfem(*),iadrcp_crkxfem(*)
82 my_real
83 . fsky(8,lsky),fskym(lsky),fthesky(lsky),condnsky(lsky)
84 type (glob_therm_) ,intent(inout) :: glob_therm
85C-----------------------------------------------
86C L o c a l V a r i a b l e s
87C-----------------------------------------------
88 INTEGER I, J, N, K, L, NC1, NC, LOC_PROC, NOD, CC, lsd, lrc,
89 . WORK(70000), LSD1,LRC1,NOD1,XFEM_REM_COUNT
90 INTEGER,DIMENSION(:),ALLOCATABLE :: INDEX
91C-----------------------------------------------
92 CALL my_alloc(index,2*numnod)
93C-----------------------------------------------
94C Init a ZERO FORCES NODALES
95C-----------------------------------------------
96 nisky = 0
97 DO n = 1, ninter
98 niskyfi(n) = 0
99 niskyfie(n) = 0
100 ENDDO
101 DO k=1,8
102 DO i = 1, lsky
103 fsky(k,i)=zero
104 ENDDO
105 ENDDO
106C
107C
108 IF (glob_therm%ITHERM_FE > 0 ) THEN
109 DO i=1,lsky
110 fthesky(i) = zero
111 ENDDO
112 ENDIF
113C
114 IF (glob_therm%NODADT_THERM > 0 ) THEN
115 DO i=1,lsky
116 condnsky(i) = zero
117 ENDDO
118 ENDIF
119C
120 IF (n2d == 0 .AND. iale+ieuler + glob_therm%ITHERM > 0) THEN
121 DO i = 1, lsky
122 fskym(i)=zero
123 ENDDO
124 ENDIF
125C
126C spmd cne et addcne deja obtenus
127C iadx deja calcule dans RADIOSS Starter
128C
129C-----------------------------------------------
130C Calcul des tailles des comms elementaires
131C-----------------------------------------------
132 DO i = 1, nspmd+1
133 fr_nbcc(1,i) = 0
134 fr_nbcc(2,i) = 0
135 ENDDO
136 IF(iplyxfem > 0 ) THEN
137 DO i = 1, nspmd+1
138 fr_nbcc1(1,i) = 0
139 fr_nbcc1(2,i) = 0
140 ENDDO
141 ENDIF
142C
143 IF(icrack3d > 0 .AND. nspmd > 1)THEN
144 DO i = 1, nspmd+1
145 fr_nbcc1(1,i) = 0
146 fr_nbcc1(2,i) = 0
147 ENDDO
148 ENDIF
149C
150 loc_proc = ispmd+1
151C
152 lsd = 1
153 lrc = 1
154C
155 lsd1 = 1
156 lrc1 = 1
157 IF(iplyxfem == 0 .AND. icrack3d == 0) THEN
158 DO i = 1, nspmd
159 iadsdp(i)=lsd
160 iadrcp(i)=lrc
161 IF(i/=loc_proc) THEN
162 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
163 nod = fr_elem(j)
164 DO cc = addcne(nod),addcne(nod+1)-1
165 IF(procne(cc)==loc_proc) THEN
166 fr_nbcc(1,i) = fr_nbcc(1,i)+1
167 isendp(lsd) = cc
168 lsd = lsd + 1
169 ELSEIF(procne(cc)==i) THEN
170 fr_nbcc(2,i) = fr_nbcc(2,i)+1
171 irecvp(lrc) = cc
172 lrc = lrc + 1
173 ENDIF
174 ENDDO
175 ENDDO
176 ENDIF
177 ENDDO
178C
179 iadsdp(nspmd+1)=lsd
180 iadrcp(nspmd+1)=lrc
181 ELSE IF (iplyxfem > 0) THEN
182 DO i = 1, nspmd
183 iadsdp(i)=lsd
184 iadrcp(i)=lrc
185C
186 iadsdp_pxfem(i)=lsd1
187 iadrcp_pxfem(i)=lrc1
188 IF(i/=loc_proc) THEN
189 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
190 nod = fr_elem(j)
191 DO cc = addcne(nod),addcne(nod+1)-1
192 IF(procne(cc)==loc_proc) THEN
193 fr_nbcc(1,i) = fr_nbcc(1,i)+1
194 isendp(lsd) = cc
195 lsd = lsd + 1
196 ELSEIF(procne(cc)==i) THEN
197 fr_nbcc(2,i) = fr_nbcc(2,i)+1
198 irecvp(lrc) = cc
199 lrc = lrc + 1
200 ENDIF
201 ENDDO
202 nod1 = inod_pxfem(nod)
203 IF(nod1 > 0 ) THEN
204 DO cc = addcne_pxfem(nod1),addcne_pxfem(nod1+1)-1
205 IF(procne_pxfem(cc)==loc_proc) THEN
206 fr_nbcc1(1,i) = fr_nbcc1(1,i)+1
207 isendp_pxfem(lsd1) = cc
208 lsd1 = lsd1 + 1
209 ELSEIF(procne_pxfem(cc)==i) THEN
210 fr_nbcc1(2,i) = fr_nbcc1(2,i)+1
211 irecvp_pxfem(lrc1) = cc
212 lrc1 = lrc1 + 1
213 ENDIF
214 ENDDO
215 ENDIF
216 ENDDO
217 ENDIF
218 ENDDO
219 iadsdp(nspmd+1)=lsd
220 iadrcp(nspmd+1)=lrc
221C
222 iadsdp_pxfem(nspmd+1)=lsd1
223 iadrcp_pxfem(nspmd+1)=lrc1
224c
225 ELSE IF (icrack3d > 0 .AND. nspmd > 1) THEN
226 DO i = 1, nspmd
227 iadsdp(i)=lsd
228 iadrcp(i)=lrc
229C
230 iadsdp_crkxfem(i)=lsd1
231 iadrcp_crkxfem(i)=lrc1
232 IF (i /= loc_proc) THEN
233 DO j = iad_elem(1,i),iad_elem(1,i+1)-1
234 nod = fr_elem(j)
235 DO cc = addcne(nod),addcne(nod+1)-1
236 IF (procne(cc) == loc_proc) THEN
237 fr_nbcc(1,i) = fr_nbcc(1,i)+1
238 isendp(lsd) = cc
239 lsd = lsd + 1
240 ELSEIF (procne(cc) == i) THEN
241 fr_nbcc(2,i) = fr_nbcc(2,i)+1
242 irecvp(lrc) = cc
243 lrc = lrc + 1
244 ENDIF
245 ENDDO
246c---
247 nod1 = inod_crkxfem(nod)
248 IF (nod1 > 0 ) THEN
249 xfem_rem_count = 0
250 DO cc = addcne_crkxfem(nod1),addcne_crkxfem(nod1+1)-1
251 IF (procne_crkxfem(cc) == i) xfem_rem_count =
252 . xfem_rem_count+1
253 ENDDO
254c
255 IF (xfem_rem_count /= 0) THEN
256 DO cc = addcne_crkxfem(nod1),addcne_crkxfem(nod1+1)-1
257 IF (procne_crkxfem(cc)==loc_proc) THEN
258 fr_nbcc1(1,i) = fr_nbcc1(1,i)+1
259 isendp_crkxfem(lsd1) = cc
260 lsd1 = lsd1 + 1
261 ELSEIF (procne_crkxfem(cc)==i) THEN
262 fr_nbcc1(2,i) = fr_nbcc1(2,i)+1
263 irecvp_crkxfem(lrc1) = cc
264 lrc1 = lrc1 + 1
265 ENDIF
266 ENDDO
267 ENDIF
268c
269 ENDIF
270c---
271 ENDDO ! loop over frontier nodes
272 ENDIF ! I /= LOC_PROC
273 ENDDO ! I = 1, NSPMD
274 iadsdp(nspmd+1)=lsd
275 iadrcp(nspmd+1)=lrc
276C
277 iadsdp_crkxfem(nspmd+1)=lsd1
278 iadrcp_crkxfem(nspmd+1)=lrc1
279 ENDIF
280C-------------------------------------
281 DO i = 1, nspmd
282 fr_nbcc(1,nspmd+1) = fr_nbcc(1,nspmd+1) + fr_nbcc(1,i)
283 fr_nbcc(2,nspmd+1) = fr_nbcc(2,nspmd+1) + fr_nbcc(2,i)
284 ENDDO
285C
286 IF(iplyxfem > 0) THEN
287 DO i = 1, nspmd
288 fr_nbcc1(1,nspmd+1) = fr_nbcc1(1,nspmd+1) + fr_nbcc1(1,i)
289 fr_nbcc1(2,nspmd+1) = fr_nbcc1(2,nspmd+1) + fr_nbcc1(2,i)
290 ENDDO
291 ENDIF
292C
293 IF(icrack3d > 0 .AND. nspmd > 1)THEN
294 DO i = 1, nspmd
295 fr_nbcc1(1,nspmd+1) = fr_nbcc1(1,nspmd+1) + fr_nbcc1(1,i)
296 fr_nbcc1(2,nspmd+1) = fr_nbcc1(2,nspmd+1) + fr_nbcc1(2,i)
297 ENDDO
298 ENDIF
299C-----------------------------------------------
300C Optimisation vectorielle de asspar4
301C-----------------------------------------------
302 IF (ivector==1) THEN
303C index : 2*numnod
304C indsky : numnod
305 DO n = 1, numnod
306 indsky(n) = addcne(n+1) - addcne(n)
307 index(n) = n
308 ENDDO
309 CALL my_orders(0,work,indsky,index,numnod,1)
310 DO n = 1, numnod
311 indsky(n) = index(n)
312 ENDDO
313C
314C reperage des blocs
315C
316 nc1 = -1
317 i = 1
318 nbloc = 0
319 DO WHILE (i<=numnod)
320 n = indsky(i)
321 nc = addcne(n+1)-addcne(n)
322 IF(nc==nc1) THEN
323 nbval(nbloc) = nbval(nbloc)+1
324 ELSE
325 nc1 = nc
326 nbloc = nbloc+1
327 IF (nbloc>maxbloc) THEN
328 WRITE(iout,*)
329 . ' **ERROR**: MEMORY PROBLEM IN PARITH OPTION'
330 WRITE(istdo,*)
331 . ' **ERROR**: MEMORY PROBLEM IN PARITH OPTION'
332 tstop=zero
333 RETURN
334 ENDIF
335 nbval(nbloc) = 1
336 nbcol(nbloc) = nc
337 ENDIF
338 i = i+1
339 ENDDO
340C fin ivector=1
341 ENDIF
342C
343C Partie Interface type 2
344C
345 DO i = 1, nspmd+1
346 fr_nbcci2(1,i) = 0
347 fr_nbcci2(2,i) = 0
348 ENDDO
349
350 IF(i2nsnt>0) THEN
351C-----------------------------------------------
352C Calcul des tailles des comms elementaires
353C-----------------------------------------------
354C
355 loc_proc = ispmd+1
356 DO i = 1, nspmd
357 IF(i/=loc_proc) THEN
358 DO j=iad_i2m(i),iad_i2m(i+1)-1
359 nod = fr_i2m(j)
360 DO cc = addcni2(nod),addcni2(nod+1)-1
361 IF(procni2(cc)==loc_proc) THEN
362 fr_nbcci2(1,i) = fr_nbcci2(1,i)+1
363C ELSE
364 ELSEIF(procni2(cc)==i) THEN
365 fr_nbcci2(2,i) = fr_nbcci2(2,i)+1
366 ENDIF
367 ENDDO
368 ENDDO
369 ENDIF
370 ENDDO
371C
372 DO i = 1, nspmd
373 fr_nbcci2(1,nspmd+1) = fr_nbcci2(1,nspmd+1)+fr_nbcci2(1,i)
374 fr_nbcci2(2,nspmd+1) = fr_nbcci2(2,nspmd+1)+fr_nbcci2(2,i)
375 ENDDO
376C-----------------------------------------------
377C Optimisation vectorielle de asspari2
378C-----------------------------------------------
379 IF (ivector==1) THEN
380C index : 2*numnod
381C indskyi2 : numnod
382 DO n = 1, numnod
383 indskyi2(n) = addcni2(n+1) - addcni2(n)
384 index(n) = n
385 ENDDO
386 CALL my_orders(0,work,indskyi2,index,numnod,1)
387 DO n = 1, numnod
388 indskyi2(n) = index(n)
389 ENDDO
390C
391C reperage des blocs
392C
393 nc1 = -1
394 i = 1
395 nbloci2 = 0
396 DO WHILE (i<=numnod)
397 n = indskyi2(i)
398 nc = addcni2(n+1)-addcni2(n)
399 IF(nc==nc1) THEN
400 nbvali2(nbloci2) = nbvali2(nbloci2)+1
401 ELSE
402 nc1 = nc
403 nbloci2 = nbloci2+1
404 IF (nbloci2>maxbloc) THEN
405 WRITE(iout,*)
406 . ' **ERROR**: MEMORY PROBLEM IN PARITH OPTION'
407 WRITE(istdo,*)
408 . ' **ERROR**: MEMORY PROBLEM IN PARITH OPTION'
409 tstop=zero
410 RETURN
411 ENDIF
412 nbvali2(nbloci2) = 1
413 nbcoli2(nbloci2) = nc
414 ENDIF
415 i = i+1
416 ENDDO
417C fin ivector=1
418 ENDIF
419C fin interface type I2NSNT > 0
420 END IF
421C
422 DEALLOCATE(index)
423 RETURN
424 END
425C
426!||====================================================================
427!|| assinit ../engine/source/assembly/assadd2.F
428!||--- called by ------------------------------------------------------
429!|| resol ../engine/source/engine/resol.f
430!||====================================================================
431 SUBROUTINE assinit(
432 1 ADDCNE, IAD_ELEM, FR_ELEM, PROCNE, LISENDP, LIRECVP)
433C-----------------------------------------------
434C I m p l i c i t T y p e s
435C-----------------------------------------------
436#include "implicit_f.inc"
437C-----------------------------------------------
438C C o m m o n B l o c k s
439C-----------------------------------------------
440#include "com01_c.inc"
441#include "parit_c.inc"
442#include "task_c.inc"
443C-----------------------------------------------------------------
444C D u m m y A r g u m e n t s
445C-----------------------------------------------
446 INTEGER ADDCNE(*),IAD_ELEM(2,*),
447 . PROCNE(*),FR_ELEM(*), LISENDP, LIRECVP
448C-----------------------------------------------
449C L o c a l V a r i a b l e s
450C-----------------------------------------------
451 INTEGER I, J, LOC_PROC, NOD, CC, LSD, LRC
452C-----------------------------------------------
453C Calcul des tailles des comms optimis\E9es parith/on
454C-----------------------------------------------
455 IF(nspmd>0.AND.iparit>0)THEN
456 loc_proc = ispmd+1
457C
458 lsd = 0
459 lrc = 0
460 DO i = 1, nspmd
461 IF(i/=loc_proc) THEN
462 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
463 nod = fr_elem(j)
464 DO cc = addcne(nod),addcne(nod+1)-1
465 IF(procne(cc)==loc_proc) THEN
466 lsd = lsd + 1
467 ELSEIF(procne(cc)==i) THEN
468 lrc = lrc + 1
469 ENDIF
470 ENDDO
471 ENDDO
472 ENDIF
473 ENDDO
474 lisendp = lsd
475 lirecvp = lrc
476 ELSE
477 lisendp = 0
478 lirecvp = 0
479 END IF
480C
481 RETURN
482 END
483!||====================================================================
484!|| assinit_pxfem ../engine/source/assembly/assadd2.F
485!||--- called by ------------------------------------------------------
486!|| resol ../engine/source/engine/resol.F
487!||====================================================================
488 SUBROUTINE assinit_pxfem(
489 1 ADDCNE,INOD, IAD_ELEM, FR_ELEM, PROCNE, LISENDP, LIRECVP)
490C-----------------------------------------------
491C I m p l i c i t T y p e s
492C-----------------------------------------------
493#include "implicit_f.inc"
494C-----------------------------------------------
495C C o m m o n B l o c k s
496C-----------------------------------------------
497#include "com01_c.inc"
498#include "parit_c.inc"
499#include "task_c.inc"
500C-----------------------------------------------------------------
501C D u m m y A r g u m e n t s
502C-----------------------------------------------
503 INTEGER ADDCNE(*),IAD_ELEM(2,*),INOD(*),
504 . PROCNE(*),FR_ELEM(*), LISENDP, LIRECVP
505C-----------------------------------------------
506C L o c a l V a r i a b l e s
507C-----------------------------------------------
508 INTEGER I, J, LOC_PROC, NOD, CC, LSD, LRC,N
509C-----------------------------------------------
510C Calcul des tailles des comms optimis\E9es parith/on
511C-----------------------------------------------
512 IF(NSPMD>0.AND.IPARIT>0)THEN
513 loc_proc = ispmd+1
514C
515 lsd = 0
516 lrc = 0
517 DO i = 1, nspmd
518 IF(i/=loc_proc) THEN
519 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
520 n = fr_elem(j)
521 nod = inod(n)
522 IF(nod > 0 )THEN
523 DO cc = addcne(nod),addcne(nod+1)-1
524 IF(procne(cc)==loc_proc) THEN
525 lsd = lsd + 1
526 ELSEIF(procne(cc)==i) THEN
527 lrc = lrc + 1
528 ENDIF
529 ENDDO
530 ENDIF
531 ENDDO
532 ENDIF
533 ENDDO
534 lisendp = lsd
535 lirecvp = lrc
536 ELSE
537 lisendp = 0
538 lirecvp = 0
539 END IF
540C
541 RETURN
542 END
543!||====================================================================
544!|| assinit_crkxfem ../engine/source/assembly/assadd2.F
545!||--- called by ------------------------------------------------------
546!|| resol ../engine/source/engine/resol.F
547!||====================================================================
548 SUBROUTINE assinit_crkxfem(
549 1 ADDCNE_CRKXFEM,INOD_CRKXFEM, IAD_ELEM, FR_ELEM, PROCNE, LISENDP, LIRECVP)
550C-----------------------------------------------
551C I m p l i c i t T y p e s
552C-----------------------------------------------
553#include "implicit_f.inc"
554C-----------------------------------------------
555C C o m m o n B l o c k s
556C-----------------------------------------------
557#include "com01_c.inc"
558#include "parit_c.inc"
559#include "task_c.inc"
560C-----------------------------------------------------------------
561C D u m m y A r g u m e n t s
562C-----------------------------------------------
563 INTEGER ADDCNE_CRKXFEM(*),IAD_ELEM(2,*),INOD_CRKXFEM(*),
564 . PROCNE(*),FR_ELEM(*), LISENDP, LIRECVP
565C-----------------------------------------------
566C L o c a l V a r i a b l e s
567C-----------------------------------------------
568 INTEGER I, J, LOC_PROC, NOD, CC, LSD, LRC,N,
569 . LENR,K
570C-----------------------------------------------
571C Calcul des tailles des comms optimis\E9es parith/on
572C-----------------------------------------------
573 IF(NSPMD>0.AND.IPARIT>0)THEN
574 loc_proc = ispmd+1
575C
576 lsd = 0
577 lrc = 0
578 DO i = 1, nspmd
579 IF(i/=loc_proc) THEN
580 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
581 n = fr_elem(j)
582 nod = inod_crkxfem(n)
583 IF(nod > 0 )THEN ! check if node is Xfem sur proc i /= proc_loc
584 DO cc = addcne_crkxfem(nod),addcne_crkxfem(nod+1)-1
585 IF(procne(cc)==loc_proc) THEN
586 lsd = lsd + 1 ! long de frontiere d'echange pour send
587 ELSEIF(procne(cc)==i) THEN
588 lrc = lrc + 1 ! long de frontiere d'echange pour rcv
589 ENDIF
590 ENDDO
591 ENDIF
592 ENDDO
593 ENDIF
594 ENDDO
595 lisendp = lsd
596 lirecvp = lrc
597 ELSE
598 lisendp = 0
599 lirecvp = 0
600 END IF
601C
602 RETURN
603 END
subroutine assadd2(addcne, indsky, fsky, fskym, iad_elem, fr_elem, fr_nbcc, procne, niskyfi, addcni2, procni2, iad_i2m, fr_i2m, fr_nbcci2, indskyi2, iadsdp, iadrcp, isendp, irecvp, fthesky, niskyfie, inod_pxfem, addcne_pxfem, procne_pxfem, isendp_pxfem, irecvp_pxfem, iadsdp_pxfem, iadrcp_pxfem, fr_nbcc1, inod_crkxfem, addcne_crkxfem, procne_crkxfem, isendp_crkxfem, irecvp_crkxfem, iadsdp_crkxfem, iadrcp_crkxfem, condnsky, glob_therm)
Definition assadd2.F:43
subroutine assinit_pxfem(addcne, inod, iad_elem, fr_elem, procne, lisendp, lirecvp)
Definition assadd2.F:490
subroutine assinit_crkxfem(addcne_crkxfem, inod_crkxfem, iad_elem, fr_elem, procne, lisendp, lirecvp)
Definition assadd2.F:550
subroutine assinit(addcne, iad_elem, fr_elem, procne, lisendp, lirecvp)
Definition assadd2.F:433
#define my_real
Definition cppsort.cpp:32
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
Definition my_orders.c:82
subroutine resol(timers, element, nodes, coupling, af, iaf, iskwn, neth, ipart, nom_opt, kxx, ixx, ixtg, ixs, ixq, ixt, ixp, ixr, ifill, mat_elem, ims, npc, ibcl, ibfv, idum, las, laccelm, nnlink, lnlink, iparg, dd_iad, igrv, iexlnk, kinet, ipari, nprw, iconx, npby, lpby, lrivet, nstrf, ljoint, nodpor, monvol, ilink, llink, linale, neflsw, nnflsw, icut, cluster, itask, inoise, thke, damp, pm, skews, geo, eani, bufmat, bufgeo, bufsf, w, veul, fill, dfill, alph, wb, dsave, asave, msnf, tf, forc, vel, fsav, fzero, xlas, accelm, agrv, fr_wave, failwave, parts0, elbuf, rwbuf, sensors, rwsav, rby, rivet, secbuf, volmon, lambda, wa, fv, partsav, uwa, val2, phi, segvar, r, crflsw, flsw, fani, xcut, anin, tani, secfcum, bufnois, idata, rdata, iframe, kxsp, ixsp, nod2sp, ispsym, ispcond, xframe, spbuf, xspsym, vspsym, pv, fsavd, ibvel, lbvel, wasph, w16, isphio, lprtsph, lonfsph, vsphio, fbvel, lagbuf, ibcslag, iactiv, dampr, gjbufi, gjbufr, rbmpc, ibmpc, sphveln, nbrcvois, nbsdvois, lnrcvois, lnsdvois, nercvois, nesdvois, lercvois, lesdvois, npsegcom, lsegcom, nporgeo, ixtg1, npbyl, lpbyl, rbyl, igeo, ipm, madprt, madsh4, madsh3, madsol, madnod, madfail, iad_rby, fr_rby, fr_wall, iad_rby2, fr_rby2, iad_i2m, fr_i2m, addcni2, procni2, iadi2, fr_mv, iadmv2, fr_ll, fr_rl, iadcj, fr_cj, fr_sec, iad_sec, iad_cut, fr_cut, rg_cut, newfront, fr_mad, fxbipm, fxbrpm, fxbnod, fxbmod, fxbglm, fxbcpm, fxbcps, fxblm, fxbfls, fxbdls, fxbdep, fxbvit, fxbacc, fxbelm, fxbsig, fxbgrvi, fxbgrvr, eigipm, eigibuf, eigrpm, lnodpor, fr_i18, graphe, iflow, rflow, lgrav, dd_r2r, fasolfr, fr_lagf, llagf, lprw, icontact, rcontact, sh4tree, sh3tree, ipadmesh, padmesh, msc, mstg, inc, intg, ptg, iskwp, nskwp, isensp, nsensp, iaccp, naccp, ipart_state, acontact, pcontact, factiv, sh4trim, sh3trim, mscnd, incnd, ibfflux, fbfflux, rbym, irbym, lnrbym, icodrbym, ibcv, fconv, ibftemp, fbftemp, iad_rbym, fr_rbym, weight_rm, ms_ply, zi_ply, inod_pxfem, iel_pxfem, iadc_pxfem, adsky_pxfem, icode_ply, icodt_ply, iskew_ply, admsms, madclnod, nom_sect, mcpc, mcptg, dmelc, dmeltg, mssa, dmels, mstr, dmeltr, msp, dmelp, msrt, dmelrt, ibcr, fradia, res_sms, table, irbe2, lrbe2, iad_rbe2, fr_rbe2, phie, msf, procne_pxfem, iadsdp_pxfem, iadrcp_pxfem, icfield, lcfield, cfield, msz2, diag_sms, iloadp, lloadp, loadp, inod_crk, iel_crk, iadc_crk, adsky_crk, cne_crk, procne_crk, iadsdp_crk, iadrcp_crk, ibufssg_io, ibc_ply, dmint2, ibordnode, elbuf_tab, por, nodedge, iad_edge, fr_edge, fr_nbedge, crknodiad, lgauge, gauge, igaup, ngaup, nodlevxf, dd_r2r_elem, nodglobxfe, sph2sol, sol2sph, irst, dmsph, wagap, xfem_tab, elcutc, nodenr, kxfenod2elc, enrtag, rthbu f, kxig3d, ixig3d, knot, wige, wsmcomp, stack, cputime_mp_glob, cputime_mp, tab_ump, poin_ump, sol2sph_typ, irunn_bis, addcsrect, iad_frnor, fr_nor, procnor, iad_fredg, fr_edg, drape_sh4n, drape_sh3n, tab_mat, nativ0_sms, multi_fvm, segquadfr, ms_2d, h3d_data, subsets, igrnod, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring, igrpart, igrsurf, forneqs, nloc_dmg, iskwp_l, knotlocpc, knotlocel, pinch_data, tag_skins6, ale_connectivity, xcell, xface, ne_nercvois, ne_nesdvois, ne_lercvois, ne_lesdvois, ibcscyc, lbcscyc, t_monvol, id_global_vois, face_vois, dynain_data, fcont_max, ebcs_tab, diffusion, kloadpinter, loadpinter, dgaploadint, drapeg, user_windows, output, interfaces, dt, loads, python, dpl0cld, vel0cld, ndamp_vrel, id_damp_vrel, fr_damp_vrel, ndamp_vrel_rbyg, names_and_titles, unitab, liflow, lrflow, glob_therm, pblast, rbe3)
Definition resol.F:633