OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
parsor0.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!|| parsor0 ../engine/source/output/anim/generate/parsor0.F
25!||--- called by ------------------------------------------------------
26!|| genani ../engine/source/output/anim/generate/genani.F
27!||--- calls -----------------------------------------------------
28!|| spmd_iget_partn ../engine/source/mpi/anim/spmd_iget_partn.F
29!|| spmd_iglob_partn ../engine/source/mpi/anim/spmd_iglob_partn.F
30!|| write_i_c ../common_source/tools/input_output/write_routines.c
31!||====================================================================
32 SUBROUTINE parsor0(IADD ,IPARG ,MATER ,EL2FA ,
33 2 DD_IAD,IADG ,
34 3 KXSP ,IPARTSP ,NODGLOB)
35C-----------------------------------------------
36C I m p l i c i t T y p e s
37C-----------------------------------------------
38#include "implicit_f.inc"
39C-----------------------------------------------
40C C o m m o n B l o c k s
41C-----------------------------------------------
42#include "com01_c.inc"
43#include "com04_c.inc"
44#include "sphcom.inc"
45#include "param_c.inc"
46#include "task_c.inc"
47#include "spmd_c.inc"
48C-----------------------------------------------
49C D u m m y A r g u m e n t s
50C-----------------------------------------------
51C REAL
52 INTEGER IADD(*),IPARG(NPARG,*),
53 . MATER(*),EL2FA(*),
54 . iadg(nspmd,*),
55 . dd_iad(nspmd+1,*),
56 . kxsp(nisp,*),ipartsp(*),
57 . nodglob(*)
58C-----------------------------------------------
59C REAL
60 INTEGER II, IE, NG, ITY, LFT, LLT, N, I,
61 . NEL, IAD, NPAR, NFT, IPRT,
62 . nn1,nn2,
63 . jj, inod,
64 . np(numsph),buf,bufp
65C-----------------------------------------------
66C
67 nn1 = 1
68 nn2 = nn1 + numsph+maxpjet
69 ie = 0
70C-----------------------------------------------
71C MID
72C-----------------------------------------------
73 npar = 0
74 jj = 0
75C
76 DO 100 iprt = 1 , npart
77C
78 IF(mater(iprt)/=4) GOTO 100
79 npar = npar + 1
80 DO 90 ng=1,ngroup
81 nel =iparg(2,ng)
82 nft =iparg(3,ng)
83 iad =iparg(4,ng)
84 ity =iparg(5,ng)
85 lft=1
86 llt=nel
87 IF(ity==51)THEN
88C-----------------------------------------------
89C PARTICULES SPH.
90C-----------------------------------------------
91 DO 20 i=lft,llt
92 n = i + nft
93 IF(ipartsp(n)/=iprt) GOTO 20
94 inod=kxsp(3,n)
95 IF (nspmd == 1) THEN
96 ii = inod-1
97 CALL write_i_c(ii,1)
98 ELSE
99 np(jj+1) = nodglob(inod)-1
100 END IF
101 jj = jj+1
102 ie = ie + 1
103 el2fa(nn1+n) = ie
104 20 CONTINUE
105 ELSE
106 ENDIF
107 90 CONTINUE
108C-----------------------------------------------
109C PART ADRESS
110C-----------------------------------------------
111 iadd(npar) = ie
112 100 CONTINUE
113C
114 IF (nspmd > 1) THEN
115 IF (ispmd==0) THEN
116 bufp = npart
117 buf = numsphg
118 ELSE
119 bufp = 1
120 buf=1
121 END IF
122
123 CALL spmd_iglob_partn(iadd,npar,iadg,bufp)
124 CALL spmd_iget_partn(1,jj,np,npar,iadg,buf,1)
125 ELSE ! IADG filling for mono/multi compatibility
126 DO i = 1, npart
127 iadg(1,i) = iadd(i)
128 END DO
129 ENDIF
130C-----------------------------------------------
131 RETURN
132 END
subroutine parsor0(iadd, iparg, mater, el2fa, dd_iad, iadg, kxsp, ipartsp, nodglob)
Definition parsor0.F:35
subroutine spmd_iget_partn(size, nbf_l, np, nbpart, iadg, srbuf, iflag)
subroutine spmd_iglob_partn(iad, nbpart, iadg, sbuf)
void write_i_c(int *w, int *len)