41 un_m1, un, pn_m1, pn, phin_m1, phin)
44 REAL(KIND=8),
INTENT(OUT):: time
45 REAL(KIND=8),
INTENT(IN) :: dt
46 INTEGER,
DIMENSION(:),
INTENT(IN) :: list_mode
47 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(OUT):: un_m1, un
48 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(OUT):: pn_m1, pn, phin_m1, phin
50 REAL(KIND=8),
DIMENSION(mesh_c%np) :: pn_m2
53 DO i= 1,
SIZE(list_mode)
57 un_m1(:,j,i) =
vv_exact(j,mesh_f%rr,mode,time-dt)
58 un(:,j,i) =
vv_exact(j,mesh_f%rr,mode,time)
62 pn_m2(:) =
pp_exact(j,mesh_c%rr,mode,time-2*dt)
63 pn_m1(:,j,i) =
pp_exact(j,mesh_c%rr,mode,time-dt)
64 pn(:,j,i) =
pp_exact(j,mesh_c%rr,mode,time)
65 phin_m1(:,j,i) = pn_m1(:,j,i) - pn_m2(:)
66 phin(:,j,i) = pn(:,j,i) - pn_m1(:,j,i)
93 dt, list_mode, level_set_m1, level_set)
96 REAL(KIND=8),
INTENT(OUT):: time
97 REAL(KIND=8),
INTENT(IN) :: dt
98 INTEGER,
DIMENSION(:),
INTENT(IN) :: list_mode
99 REAL(KIND=8),
DIMENSION(:,:,:,:),
INTENT(OUT):: level_set, level_set_m1
100 INTEGER :: mode, i, j, n
103 DO i= 1,
SIZE(list_mode)
107 DO n = 1,
inputs%nb_fluid -1
119 INTEGER ,
INTENT(IN) :: TYPE
120 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
121 INTEGER ,
INTENT(IN) :: mode, i
122 REAL(KIND=8),
INTENT(IN) :: time
123 REAL(KIND=8),
INTENT(IN) :: Re
124 CHARACTER(LEN=2),
INTENT(IN) :: ty
125 REAL(KIND=8),
DIMENSION(:,:,:),
OPTIONAL,
INTENT(IN) :: opt_density
126 REAL(KIND=8),
DIMENSION(:,:,:),
OPTIONAL,
INTENT(IN) :: opt_tempn
127 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
128 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: r, z
131 CHARACTER(LEN=2) :: np
133 IF (
PRESENT(opt_tempn))
CALL error_petsc(
'temperature should not be present for test 25')
140 IF (m==0 .AND. type==1)
THEN 141 vv = -r**3*(1+r**2+z**2)*sin(-z+t)**2
142 ELSE IF (m==0 .AND. type==3)
THEN 143 vv = r**2*(1+r**2+z**2)*cos(-z+t) &
144 - 1/re*(3.d0+4.d0*r**2+3.d0*z**2 &
145 - r**4 - r**2*z**2)*sin(-z+t) &
146 + 2.d0/re*z*r**2*cos(-z+t)
153 m=i; m=
SIZE(opt_density,1); np=ty
174 INTEGER ,
INTENT(IN) :: TYPE
175 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
176 INTEGER ,
INTENT(IN) :: m, interface_nb
177 REAL(KIND=8),
INTENT(IN) :: t
178 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
186 n=type; n=
SIZE(rr,1); n=m; n=interface_nb; r=t
192 FUNCTION vv_exact(TYPE,rr,m,t) RESULT(vv)
194 INTEGER ,
INTENT(IN) :: TYPE
195 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
196 INTEGER,
INTENT(IN) :: m
197 REAL(KIND=8),
INTENT(IN) :: t
198 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
199 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: r, z
204 IF (m==0 .AND. type==3)
THEN 229 FUNCTION pp_exact(TYPE,rr,m,t) RESULT (vv)
231 INTEGER ,
INTENT(IN) :: TYPE
232 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
233 INTEGER ,
INTENT(IN) :: m
234 REAL(KIND=8),
INTENT(IN) :: t
235 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
243 n=type; n=
SIZE(rr,1); n=m; r=t
264 INTEGER ,
INTENT(IN) :: TYPE
265 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
266 INTEGER ,
INTENT(IN) :: m, interface_nb
267 REAL(KIND=8),
INTENT(IN) :: t
268 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
271 IF (interface_nb==1)
THEN 272 IF (m==0 .AND.
TYPE ==1) then
273 vv = rr(1,:)**2 + rr(2,:)**2
278 CALL error_petsc(
' BUG in level_set_exact, we should compute only 1 level set')
subroutine, public init_velocity_pressure(mesh_f, mesh_c, time, dt, list_mode, un_m1, un, pn_m1, pn, phin_m1, phin)
real(kind=8) function, dimension(size(rr, 2)), public source_in_level_set(interface_nb, TYPE, rr, m, t)
real(kind=8) function, dimension(size(rr, 2)), public level_set_exact(interface_nb, TYPE, rr, m, t)
subroutine error_petsc(string)
real(kind=8) function, dimension(size(rr, 2)), public source_in_ns_momentum(TYPE, rr, mode, i, time, Re, ty, opt_density, opt_tempn)
subroutine, public init_level_set(vv_mesh, time, dt, list_mode, level_set_m1, level_set)
real(kind=8) function, dimension(size(rr, 2)), public pp_exact(TYPE, rr, m, t)
real(kind=8) function, dimension(size(rr, 2)), public vv_exact(TYPE, rr, m, t)