OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
setlenwa.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!|| setlenwa ../starter/source/restart/ddsplit/setlenwa.F
25!||--- called by ------------------------------------------------------
26!|| ddsplit ../starter/source/restart/ddsplit/ddsplit.F
27!|| lectur ../starter/source/starter/lectur.F
28!||====================================================================
29 SUBROUTINE setlenwa(
30 1 LENWA0 ,NTHWA0 ,NAIRWA0 ,NUMELS0 ,NUMELQ0,
31 2 NUMELC0,NUMELTG0,NUMELT0 ,NUMELP0 ,NUMELR0,
32 3 NUMNOD0,NMNT0 ,L_MUL_LAG1,L_MUL_LAG,MAXNX0 ,
33 4 LWASPH0,NUMSPH0 ,LWASPIO , NRCVVOIS0 ,
34 5 LWAMP_L, LWANMP_L ,ITHERM )
35C Attention les dummy peuvent etre soit locaux soit globaux suivant appel
36C-----------------------------------------------
37C I m p l i c i t T y p e s
38C-----------------------------------------------
39#include "implicit_f.inc"
40C-----------------------------------------------
41C C o m m o n B l o c k s
42C-----------------------------------------------
43#include "com01_c.inc"
44#include "com09_c.inc"
45#include "sphcom.inc"
46#include "param_c.inc"
47C-----------------------------------------------
48C D u m m y A r g u m e n t s
49C-----------------------------------------------
50 INTEGER, INTENT(INOUT) :: LWAMP_L
51 INTEGER, INTENT(INOUT) :: LWANMP_L
52 INTEGER, INTENT(IN) :: ITHERM
53 INTEGER LENWA0,NTHWA0,NAIRWA0,
54 . NUMELS0,NUMELQ0,NUMELC0,NUMELTG0,NUMELT0,NUMELP0,
55 . numelr0,numnod0,nmnt0,l_mul_lag1,l_mul_lag,maxnx0,
56 . lwasph0,numsph0,lwaspio,nrcvvois0
57C-----------------------------------------------
58C L o c a l V a r i a b l e s
59C-----------------------------------------------
60 INTEGER NFLUWA, NBHOLWA, NAIRWA, NINTWA, NXELWA, NSPHWA,
61 . NASSNMP, NASSMP, NIDELWA, NWASPH, MSPR,
62 . IUN,LENVOISWA
63C-----------------------------------------------
64 IUN = 1
65C---------------------------------------------------------------------
66C SPH
67 nsphwa = max(2*kvoisph,4*kvoisph,
68 . 16*numsph0,lwaspio) ! 19*NUMSPH0 enleve (tri en auto)
69C work array WASPH, prive au SPH.
70 lwasph0=17*numsph0+min(iun,nsphio)*3*numsph0
71 . +min(iun,nsphsol)*numsph0
72C---------------------------------------------------------------------
73C ALE / CFD
74 nfluwa = max(iale,itherm,ieuler) * max(1,nmult) *
75 . max(7 * (numels0+numelq0),3 * numnod0)
76 nbholwa = max(iale,itherm,ieuler) * nmult * numelq0
77 lenvoiswa = 3 * ( numnod0 + nrcvvois0 )
78C AirBag
79 nairwa = max(nairwa0, 4 * (numelc0 + numeltg0 + ibagsurf)) ! en toute rigueur NAIRWA0 et IBAGSURF locaux
80C Interface
81 nintwa = nmnt0+l_mul_lag1 ! en toute rigueur NMNT local
82C
83C Assemblage SPMD : tout en dynamique
84 nassnmp = 0
85 nassmp = 0
86C shooting nodes
87 nidelwa = 3*numnod0
88C lenwa non parallele
89 lwanmp_l = max(nthwa0,nassnmp,l_mul_lag)
90C---------------------------------------------------------------------
91 nxelwa = 22*maxnx0 ! en toute rigueur MAXNX local
92C lenwa parallele
93 lwamp_l = max(nairwa,nintwa,nfluwa+nbholwa,nassmp,nxelwa,nsphwa,
94 + nidelwa,lenvoiswa)
95C
96C MSPR utilise dans le starter
97 mspr = max(4*numelr0,nparg*ngroup)
98C
99 lenwa0 = max(lwamp_l,lwanmp_l,mspr)
100C
101 RETURN
102 END
103C
104!||====================================================================
105!|| setmulti ../starter/source/restart/ddsplit/setlenwa.F
106!||--- called by ------------------------------------------------------
107!|| lectur ../starter/source/starter/lectur.F
108!||====================================================================
109 SUBROUTINE setmulti(IPARI)
110C-----------------------------------------------
111C I m p l i c i t T y p e s
112C-----------------------------------------------
113#include "implicit_f.inc"
114C-----------------------------------------------
115C C o m m o n B l o c k s
116C-----------------------------------------------
117#include "com04_c.inc"
118#include "spmd_c.inc"
119#include "param_c.inc"
120#include "sphcom.inc"
121C-----------------------------------------------
122C D u m m y A r g u m e n t s
123C-----------------------------------------------
124 INTEGER IPARI(NPARI,*)
125C-----------------------------------------------
126C L o c a l V a r i a b l e s
127C-----------------------------------------------
128 INTEGER I, MULTIMP, ICONT, ITY
129C-----------------------------------------------
130C
131C MULTIMAX : parametre servant a allouer les buffer de comm interface engine (SPMD)
132C
133 multimax = 0
134 icont = 0
135 DO i = 1, ninter
136 multimp = ipari(23,i)
137 IF(multimp<=4) THEN
138 multimax = max(multimax,4*multimp)
139 ELSEIF(multimp<=12)THEN
140 multimax= max(multimax,3*multimp)
141 ELSEIF(multimp>12)THEN
142 multimax= max(multimax,2*multimp)
143 END IF
144 ity = ipari(7,i)
145 IF(ity==7.OR.ity==10.OR.ity==11.OR. ity==22)icont=1
146 END DO
147 IF(numsph/=0.AND.multimax==0)multimax=1
148 IF(numelx/=0.AND.multimax==0)multimax=4
149 IF(ninter>0.AND.icont==0)multimax=100
150
151C
152 RETURN
153 END
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine setmulti(ipari)
Definition setlenwa.F:110
subroutine setlenwa(lenwa0, nthwa0, nairwa0, numels0, numelq0, numelc0, numeltg0, numelt0, numelp0, numelr0, numnod0, nmnt0, l_mul_lag1, l_mul_lag, maxnx0, lwasph0, numsph0, lwaspio, nrcvvois0, lwamp_l, lwanmp_l, itherm)
Definition setlenwa.F:35