OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
alesub1.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!|| alesub1 ../engine/source/ale/subcycling/alesub1.F
25!||--- called by ------------------------------------------------------
26!|| alemain ../engine/source/ale/alemain.F
27!||--- calls -----------------------------------------------------
28!|| bcs3v ../engine/source/ale/inter/bcs3v.F
29!||--- uses -----------------------------------------------------
30!|| ale_mod ../common_source/modules/ale/ale_mod.F
31!||====================================================================
32 SUBROUTINE alesub1(
33 1 NALE ,V ,W ,DSAVE ,ICODT,
34 2 ISKEW,SKEW ,D ,ITASK ,NODFT,
35 3 NODLT,FSKY ,FSKYV)
36C-----------------------------------------------
37C D e s c r i p t i o n
38C-----------------------------------------------
39C /ALESUB is an obsolete option
40C Multidomain computation (/SUBDOMAIN) is now used instead.
41C-----------------------------------------------
42C M o d u l e s
43C-----------------------------------------------
44 USE ale_mod
45C-----------------------------------------------
46C I m p l i c i t T y p e s
47C-----------------------------------------------
48#include "implicit_f.inc"
49C-----------------------------------------------
50C C o m m o n B l o c k s
51C-----------------------------------------------
52#include "com04_c.inc"
53#include "com08_c.inc"
54#include "task_c.inc"
55#include "parit_c.inc"
56#include "param_c.inc"
57C-----------------------------------------------
58C D u m m y A r g u m e n t s
59C-----------------------------------------------
60 INTEGER NALE(*),ICODT(*),ISKEW(*),ITASK,NODFT,NODLT
61 my_real V(3,NUMNOD),W(3,NUMNOD),DSAVE(3,*),SKEW(LSKEW,*),D(3,NUMNOD),FSKY(8,LSKY),FSKYV(LSKY,8)
62C-----------------------------------------------
63C L o c a l V a r i a b l e s
64C-----------------------------------------------
65 INTEGER N,LCOD, INDX2(1024),I,NINDX2,NISKFT,NISKLT,K
66 my_real FAC
67C-----------------------------------------------
68C S o u r c e L i n e s
69C-----------------------------------------------
70 fac=zero
71 IF(dt1 > zero)fac=one/dt1
72 IF(ale%SUB%IFSUB == 0)THEN
73 DO n=nodft,nodlt
74 w(1,n)=fac*(d(1,n)-dsave(1,n))
75 w(2,n)=fac*(d(2,n)-dsave(2,n))
76 w(3,n)=fac*(d(3,n)-dsave(3,n))
77 dsave(1,n)=v(1,n)
78 dsave(2,n)=v(2,n)
79 dsave(3,n)=v(3,n)
80 IF(nale(n) == 0)THEN
81 v(1,n)=w(1,n)
82 v(2,n)=w(2,n)
83 v(3,n)=w(3,n)
84 ENDIF
85 ENDDO
86 DO i=nodft,nodlt,1024
87 nindx2 = 0
88 DO n = i,min(nodlt,i+1023)
89 lcod=icodt(n+numnod+numnod)
90 IF(nale(n)*lcod /= 0)THEN
91 nindx2 = nindx2 + 1
92 indx2(nindx2) = n
93 ENDIF
94 ENDDO
95 IF (nindx2 /= 0)
96 . CALL bcs3v(nindx2,indx2,iskew,icodt(2*numnod+1),v,
97 . w ,skew)
98 ENDDO
99C
100 IF(iparit > 0)THEN
101 niskft = 1+itask*lsky/nthread
102 nisklt = (itask+1)*lsky/nthread
103 IF(ivector == 1) THEN
104 DO k=1,8
105 DO i=niskft,nisklt
106 fskyv(i,k)=zero
107 ENDDO
108 ENDDO
109 ELSE
110 DO k=1,8
111 DO i=niskft,nisklt
112 fsky(k,i)=zero
113 ENDDO
114 ENDDO
115 ENDIF
116 ENDIF
117 ENDIF
118C
119 RETURN
120 END
subroutine alesub1(nale, v, w, dsave, icodt, iskew, skew, d, itask, nodft, nodlt, fsky, fskyv)
Definition alesub1.F:36
subroutine bcs3v(nindx, indx, iskew, icodt, w, v, b)
Definition bcs3v.F:31
#define min(a, b)
Definition macros.h:20
type(ale_) ale
Definition ale_mod.F:249