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 31 of file alefvm_gravity_int22.F.

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