33 REAL(KIND=8),
PARAMETER:: alpha=1.0d0
34 REAL(KIND=8),
PARAMETER::
beta=0.5d0
43 un_m1, un, pn_m1, pn, phin_m1, phin)
46 REAL(KIND=8),
INTENT(OUT):: time
47 REAL(KIND=8),
INTENT(IN) :: dt
48 INTEGER,
DIMENSION(:),
INTENT(IN) :: list_mode
49 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(OUT):: un_m1, un
50 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(OUT):: pn_m1, pn, phin_m1, phin
52 REAL(KIND=8),
DIMENSION(mesh_c%np) :: pn_m2
55 DO i= 1,
SIZE(list_mode)
59 un_m1(:,j,i) =
vv_exact(j,mesh_f%rr,mode,time-dt)
60 un(:,j,i) =
vv_exact(j,mesh_f%rr,mode,time)
64 pn_m2(:) =
pp_exact(j,mesh_c%rr,mode,time-2*dt)
65 pn_m1(:,j,i) =
pp_exact(j,mesh_c%rr,mode,time-dt)
66 pn(:,j,i) =
pp_exact(j,mesh_c%rr,mode,time)
67 phin_m1(:,j,i) = pn_m1(:,j,i) - pn_m2(:)
68 phin(:,j,i) = pn(:,j,i) - pn_m1(:,j,i)
95 dt, list_mode, level_set_m1, level_set)
98 REAL(KIND=8),
INTENT(OUT):: time
99 REAL(KIND=8),
INTENT(IN) :: dt
100 INTEGER,
DIMENSION(:),
INTENT(IN) :: list_mode
101 REAL(KIND=8),
DIMENSION(:,:,:,:),
INTENT(OUT):: level_set, level_set_m1
102 INTEGER :: mode, i, j, n
105 DO i= 1,
SIZE(list_mode)
109 DO n = 1,
inputs%nb_fluid -1
121 INTEGER ,
INTENT(IN) :: TYPE
122 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
123 INTEGER ,
INTENT(IN) :: mode, i
124 REAL(KIND=8),
INTENT(IN) :: time
125 REAL(KIND=8),
INTENT(IN) :: Re
126 CHARACTER(LEN=2),
INTENT(IN) :: ty
127 REAL(KIND=8),
DIMENSION(:,:,:),
OPTIONAL,
INTENT(IN) :: opt_density
128 REAL(KIND=8),
DIMENSION(:,:,:),
OPTIONAL,
INTENT(IN) :: opt_tempn
129 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
131 CHARACTER(LEN=2) :: np
133 IF (
PRESENT(opt_tempn))
CALL error_petsc(
'temperature should not be present for test 39')
139 IF (rr(2,n).GE.
beta*time-0.5d0)
THEN 140 vv(n)=-
inputs%density_fluid(1)*rr(1,n)**3*sin(alpha*time-rr(2,n))**2 &
141 + 2*rr(1,n)*rr(2,n)**3*cos(time)
143 vv(n)=-
inputs%density_fluid(2)*rr(1,n)**3*sin(alpha*time-rr(2,n))**2 &
144 + 2*rr(1,n)*rr(2,n)**3*cos(time)
147 ELSE IF (type==3)
THEN 149 IF (rr(2,n).GE.
beta*time-0.5d0)
THEN 150 vv(n)= - 1.d0/
inputs%Re*sin(alpha*time-rr(2,n))*(3.d0-rr(1,n)**2) &
151 + (alpha-
beta)*
inputs%density_fluid(1)*rr(1,n)**2*cos(alpha*time-rr(2,n))
153 vv(n)= - 1.d0/
inputs%Re*sin(alpha*time-rr(2,n))*(3.d0-rr(1,n)**2) &
154 + (alpha-
beta)*
inputs%density_fluid(2)*rr(1,n)**2*cos(alpha*time-rr(2,n))
157 ELSE IF (type==5)
THEN 159 vv(n) = 3*rr(1,n)**2*rr(2,n)**2*cos(time)
168 m=i; m=
SIZE(opt_density,1); np=ty
189 INTEGER ,
INTENT(IN) :: TYPE
190 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
191 INTEGER ,
INTENT(IN) :: m, interface_nb
192 REAL(KIND=8),
INTENT(IN) :: t
193 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
201 n=type; n=
SIZE(rr,1); n=m; n=interface_nb; r=t
207 FUNCTION vv_exact(TYPE,rr,m,t) RESULT(vv)
209 INTEGER ,
INTENT(IN) :: TYPE
210 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
211 INTEGER,
INTENT(IN) :: m
212 REAL(KIND=8),
INTENT(IN) :: t
213 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
220 vv(n)=rr(1,n)**2*sin(alpha*t-rr(2,n))
222 ELSE IF (type==5)
THEN 248 FUNCTION pp_exact(TYPE,rr,m,t) RESULT (vv)
250 INTEGER ,
INTENT(IN) :: TYPE
251 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
252 INTEGER ,
INTENT(IN) :: m
253 REAL(KIND=8),
INTENT(IN) :: t
254 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
256 IF (m==0.AND.type==1)
THEN 257 vv(:) = rr(1,:)**2*rr(2,:)**3*cos(t)
281 INTEGER ,
INTENT(IN) :: TYPE
282 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
283 INTEGER ,
INTENT(IN) :: m, interface_nb
284 REAL(KIND=8),
INTENT(IN) :: t
285 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
288 IF (interface_nb==1)
THEN 289 IF (m==0 .AND. type==1)
THEN 291 IF (rr(2,n).GE.(
beta*t-0.5d0))
THEN 301 CALL error_petsc(
' BUG in level_set_exact, we should compute only 1 level set')
real(kind=8) function, dimension(size(rr, 2)), public pp_exact(TYPE, rr, m, t)
subroutine error_petsc(string)
real(kind=8) function, dimension(size(rr, 2)), public vv_exact(TYPE, rr, m, t)
real(kind=8), parameter beta
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, public init_velocity_pressure(mesh_f, mesh_c, time, dt, list_mode, un_m1, un, pn_m1, pn, phin_m1, phin)
subroutine, public init_level_set(pp_mesh, time, dt, list_mode, level_set_m1, level_set)
real(kind=8) function, dimension(size(rr, 2)), public source_in_ns_momentum(TYPE, rr, mode, i, time, Re, ty, opt_density, opt_tempn)