OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
ebcs7.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!|| ebcs7 ../engine/source/boundary_conditions/ebcs/ebcs7.F
25!||--- called by ------------------------------------------------------
26!|| ebcs_main ../engine/source/boundary_conditions/ebcs/ebcs_main.F
27!||--- uses -----------------------------------------------------
28!|| ebcs_mod ../common_source/modules/boundary_conditions/ebcs_mod.F90
29!|| segvar_mod ../engine/share/modules/segvar_mod.F
30!||====================================================================
31 SUBROUTINE ebcs7(NSEG,ISEG,SEGVAR,
32 . A,V,X,
33 . LISTE,NOD,IRECT,
34 . RO0,EN0,V0,
35 . LA,MS,STIFN,EBCS)
36 USE ebcs_mod
37 USE segvar_mod
38C-----------------------------------------------
39C I m p l i c i t T y p e s
40C-----------------------------------------------
41#include "implicit_f.inc"
42C-----------------------------------------------
43C C o m m o n B l o c k s
44C-----------------------------------------------
45#include "com08_c.inc"
46#include "scr11_c.inc"
47C-----------------------------------------------
48C D u m m y A r g u m e n t s
49C-----------------------------------------------
50 INTEGER NSEG,NOD,ISEG(NSEG),LISTE(NOD),IRECT(4,NSEG)
51 my_real
52 . A(3,*),V(3,*),X(3,*),RO0(NSEG),EN0(NSEG),
53 . V0(3,NOD),LA(3,NOD),MS(*),STIFN(*)
54 TYPE(t_ebcs_iniv), INTENT(IN) :: EBCS
55 TYPE(t_segvar) :: SEGVAR
56C-----------------------------------------------
57C L o c a l V a r i a b l e s
58C-----------------------------------------------
59 INTEGER I,IS,KSEG,N1,N2,N3,N4,NG1,NG2,NG3,NG4,N
60 my_real
61 . ORIENT,RHO,C,ROC,FAC,
62 . X13,Y13,Z13,X24,Y24,Z24,NX,NY,NZ,S,
63 . roou,enou,vmx,vmy,vmz,fluxi,fluxo,p,dvx,dvy,dvz
64C-----------------------------------------------
65 c=ebcs%c
66 rho=ebcs%rho
67 roc=rho*c
68C
69C INITIALISATION DES DENSITES ET ENERGIES INITIALES
70C
71 IF(tt==0)THEN
72 DO is=1,nseg
73 kseg=abs(iseg(is))
74 ro0(is) = segvar%RHO(kseg)
75 en0(is) = segvar%EINT(kseg)
76 ENDDO
77 DO i=1,nod
78 n=liste(i)
79 v0(1,i)=v(1,n)
80 v0(2,i)=v(2,n)
81 v0(3,i)=v(3,n)
82c write(6,*)V0(3,I)
83 ENDDO
84 ENDIF
85C SURFACE NORMALE NODALES
86 DO i=1,nod
87 la(1,i)=zero
88 la(2,i)=zero
89 la(3,i)=zero
90 ENDDO
91 DO is=1,nseg
92 kseg=abs(iseg(is))
93 orient=float(iseg(is)/kseg)
94 n1=irect(1,is)
95 n2=irect(2,is)
96 n3=irect(3,is)
97 n4=irect(4,is)
98 IF(n4==0 .OR. n4==n3) THEN
99 fac=one_over_6*orient
100 n4=n3
101 ELSE
102 fac=one_over_8*orient
103 ENDIF
104c
105 ng1=liste(n1)
106 ng2=liste(n2)
107 ng3=liste(n3)
108 ng4=liste(n4)
109 x13=x(1,ng3)-x(1,ng1)
110 y13=x(2,ng3)-x(2,ng1)
111 z13=x(3,ng3)-x(3,ng1)
112 x24=x(1,ng4)-x(1,ng2)
113 y24=x(2,ng4)-x(2,ng2)
114 z24=x(3,ng4)-x(3,ng2)
115c
116 nx=(y13*z24-z13*y24)*fac
117 ny=(z13*x24-x13*z24)*fac
118 nz=(x13*y24-y13*x24)*fac
119c
120 la(1,n1)=la(1,n1)+nx
121 la(2,n1)=la(2,n1)+ny
122 la(3,n1)=la(3,n1)+nz
123 la(1,n2)=la(1,n2)+nx
124 la(2,n2)=la(2,n2)+ny
125 la(3,n2)=la(3,n2)+nz
126 la(1,n3)=la(1,n3)+nx
127 la(2,n3)=la(2,n3)+ny
128 la(3,n3)=la(3,n3)+nz
129C
130 vmx=v(1,ng1)+v(1,ng2)+v(1,ng3)
131 vmy=v(2,ng1)+v(2,ng2)+v(2,ng3)
132 vmz=v(3,ng1)+v(3,ng2)+v(3,ng3)
133
134 IF(n4/=n3) THEN
135 la(1,n4)=la(1,n4)+nx
136 la(2,n4)=la(2,n4)+ny
137 la(3,n4)=la(3,n4)+nz
138 vmx=vmx+v(1,ng4)
139 vmy=vmy+v(2,ng4)
140 vmz=vmz+v(3,ng4)
141 ENDIF
142C
143c bilan masse et energie totale
144c
145 roou = segvar%RHO(kseg)
146 enou = segvar%EINT(kseg)
147c
148 fluxo=(vmx*nx+vmy*ny+vmz*nz)*dt1
149 fluxi=min(fluxo,zero)
150 fluxo=max(fluxo,zero)
151c
152 dmf=dmf-fluxo*roou-fluxi*ro0(is)
153 def=def-fluxo*enou-fluxi*en0(is)
154C
155C stockage densit et nergie entrante dans buffer facette
156C
157 segvar%RHO(kseg)=ro0(is)
158 segvar%EINT(kseg)=en0(is)
159 ENDDO
160C
161 DO i=1,nod
162 n=liste(i)
163 s=sqrt(la(1,i)**2+la(2,i)**2+la(3,i)**2)
164 dvx=v(1,n)-v0(1,i)
165 dvy=v(2,n)-v0(2,i)
166 dvz=v(3,n)-v0(3,i)
167c write(6,*)I,N,v(3,N),v0(3,I),roc
168 p=roc*(dvx*la(1,i)+dvy*la(2,i)+dvz*la(3,i))/s
169c
170 a(1,n)=a(1,n)-p*la(1,i)
171 a(2,n)=a(2,n)-p*la(2,i)
172 a(3,n)=a(3,n)-p*la(3,i)
173 stifn(n)=stifn(n)+(two*(s*roc)**2)/ms(n)
174 ENDDO
175c
176 RETURN
177 END
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
subroutine ebcs7(nseg, iseg, segvar, a, v, x, liste, nod, irect, ro0, en0, v0, la, ms, stifn, ebcs)
Definition ebcs7.F:36
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21