OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
alefvm_gravity_int22.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"
#include "vect01_c.inc"
#include "com01_c.inc"
#include "inter22.inc"
#include "param_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine alefvm_gravity_int22 (voln, ixs, rho, iad22)

Function/Subroutine Documentation

◆ alefvm_gravity_int22()

subroutine alefvm_gravity_int22 ( voln,
integer, dimension(nixs,*) ixs,
rho,
iad22 )

Definition at line 32 of file alefvm_gravity_int22.F.

33C-----------------------------------------------
34C D e s c r i p t i o n
35C-----------------------------------------------
36C 'alefvm' is related to a collocated scheme (built from FVM and based on Godunov scheme)
37C which was temporarily introduced for experimental option /INTER/TYPE22 (FSI coupling with cut cell method)
38C This cut cell method is not completed, abandoned, and is not an official option.
39C There is no other use for this scheme which is automatically enabled when /INTER/TYPE22 is defined (INT22>0 => IALEFVM=1).
40C
41C This subroutine is treating an uncut cell.
42C-----------------------------------------------
43C M o d u l e s
44C-----------------------------------------------
45 USE alefvm_mod
47 use element_mod , only : nixs
48C-----------------------------------------------
49C I m p l i c i t T y p e s
50C-----------------------------------------------
51#include "implicit_f.inc"
52C-----------------------------------------------
53C G l o b a l P a r a m e t e r s
54C-----------------------------------------------
55#include "mvsiz_p.inc"
56C-----------------------------------------------
57C C o m m o n B l o c k s
58C-----------------------------------------------
59#include "vect01_c.inc"
60#include "com01_c.inc"
61#include "inter22.inc"
62#include "param_c.inc"
63C-----------------------------------------------
64C D e s c r i p t i o n
65C-----------------------------------------------
66C This subroutines computes gravity forces for
67C finite volume scheme (IALEFVM==1)
68C-----------------------------------------------
69C D u m m y A r g u m e n t s
70C-----------------------------------------------
71 INTEGER :: IXS(NIXS,*)
72 my_real :: voln(mvsiz),rho(mvsiz),iad22(*)
73C-----------------------------------------------
74C L o c a l V a r i a b l e s
75C-----------------------------------------------
76 INTEGER :: I, J, K, IB, MNOD
77 INTEGER :: NVERTEX,INOd,II, NIN
78 my_real :: m_cell(mvsiz),accel(3,mvsiz)
79 LOGICAL :: debug_outp
80 INTEGER :: idbf,idbl , MCELL
81C-----------------------------------------------
82C P r e - C o n d i t i o n s
83C-----------------------------------------------
84 IF(alefvm_param%IEnabled==0)RETURN
85 IF(int22==0) RETURN
86C-----------------------------------------------
87C S o u r c e L i n e s
88C-----------------------------------------------
89
90 nin = 1
91
92 !-------------------------------------------------------------!
93 ! GRAVITY COMPUTED FOR CELL CENTROIDS !
94 !-------------------------------------------------------------!
95 DO i=lft,llt
96 ib = nint(iad22(i))
97 IF(ib<=0)cycle
98 ii = i+nft
99 nvertex = 0
100 accel(1:3,i) = zero
101 alefvm_buffer%FCELL(1:3,ii) = zero
102 !loop on main cell vertexes
103 mcell = brick_list(nin,ib)%MainID
104 mnod = brick_list(nin,ib)%POLY(mcell)%NumNOD
105 DO k=1,mnod
106 j = brick_list(nin,ib)%POLY(mcell)%ListNodID(k)
107 inod = ixs(1+j,i+nft)
108 IF(alefvm_buffer%VERTEX(4,inod)==zero) cycle
109 nvertex = nvertex + 1
110 accel(1,i) = accel(1,i) + alefvm_buffer%VERTEX(1,inod)
111 accel(2,i) = accel(2,i) + alefvm_buffer%VERTEX(2,inod)
112 accel(3,i) = accel(3,i) + alefvm_buffer%VERTEX(3,inod)
113 ENDDO
114 IF(nvertex>0)THEN
115 accel(1,i) = accel(1,i) / nvertex
116 accel(2,i) = accel(2,i) / nvertex
117 accel(3,i) = accel(3,i) / nvertex
118 ENDIF
119 enddo!next I
120
121 DO i=lft,llt
122 m_cell(i) = rho(i)*voln(i) !Check if VOLN is the supercell volume. Should be unchanged since december 2015
123 enddo!next I
124
125 DO i=lft,llt
126 ib = nint(iad22(i))
127 IF(ib<=0)cycle
128 ii = i + nft
129 alefvm_buffer%FCELL(1,ii) = alefvm_buffer%FCELL(1,ii) + m_cell(i) * accel(1,i)
130 alefvm_buffer%FCELL(2,ii) = alefvm_buffer%FCELL(2,ii) + m_cell(i) * accel(2,i)
131 alefvm_buffer%FCELL(3,ii) = alefvm_buffer%FCELL(3,ii) + m_cell(i) * accel(3,i)
132 enddo!next I
133
134 !DEBUG-OUTPUT---------------!
135 if(alefvm_param%IOUTP_GRAV /= 0)then
136 debug_outp = .false.
137 if(alefvm_param%IOUTP_GRAV>0)then
138 do i=lft,llt
139 ii = nft + i
140 if(ixs(11,ii)==alefvm_param%IOUTP_GRAV)THEN
141 debug_outp = .true.
142 idbf = i
143 idbl = i
144 EXIT
145 endif
146 enddo
147 elseif(alefvm_param%IOUTP_GRAV==-1)then
148 debug_outp=.true.
149 idbf = lft
150 idbl = llt
151 endif
152!#!include "lockon.inc"
153 if(debug_outp)then
154!#!include "lockon.inc"
155 print *, " |----alefvm_gravity.F----|"
156 print *, " | THREAD INFORMATION |"
157 print *, " |------------------------|"
158 print *, " NCYCLE =", ncycle
159 do i=idbf,idbl
160 ii = nft + i
161 ib = nint(iad22(i))
162 IF(ib<=0)cycle
163 print *, " brique=", ixs(11,nft+i)
164 write(*,fmt='(A24,1A26)') " ",
165 . "#--------- cell----------#"
166 write (*,fmt='(A,1E26.14)') " Rho =", rho(i)
167 write (*,fmt='(A,1E26.14)') " Vol =", voln(i)
168 write (*,fmt='(A,1E26.14)') " Mass =", m_cell(i)
169 write (*,fmt='(A,1E26.14)') " Accel-X =", accel(1,i)
170 write (*,fmt='(A,1E26.14)') " Accel-Y =", accel(2,i)
171 write (*,fmt='(A,1E26.14)') " Accel-Z =", accel(3,i)
172 write(*,fmt='(A24,8A26)') " ",
173 . "#--------- nod_1 ---------","#--------- nod_2 ---------",
174 . "#--------- nod_3 ---------","#--------- nod_4 ---------",
175 . "#--------- nod_5 ---------","#--------- nod_6 ---------",
176 . "#--------- nod_7 ---------","#--------- nod_8 --------#"
177 write (*,fmt='(A,8E26.14)') " acc-X =", alefvm_buffer%VERTEX(1,ixs(2:9,i))
178 write (*,fmt='(A,8E26.14)') " acc-Y =", alefvm_buffer%VERTEX(2,ixs(2:9,i))
179 write (*,fmt='(A,8E26.14)') " acc-Z =", alefvm_buffer%VERTEX(3,ixs(2:9,i))
180 print *, " "
181 enddo
182!#!include "lockoff.inc"
183 endif
184 endif
185 !-----------------------------------------!
186
187
188
189 RETURN
#define my_real
Definition cppsort.cpp:32
type(alefvm_buffer_), target alefvm_buffer
Definition alefvm_mod.F:120
type(alefvm_param_), target alefvm_param
Definition alefvm_mod.F:121
type(brick_entity), dimension(:,:), allocatable, target brick_list