33 REAL(KIND=8) :: pi=acos(-1.d0)
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)
75 REAL(KIND=8),
INTENT(OUT):: time
76 REAL(KIND=8),
INTENT(IN) :: dt
77 INTEGER,
DIMENSION(:),
INTENT(IN) :: list_mode
78 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(OUT):: tempn_m1, tempn
82 DO i= 1,
SIZE(list_mode)
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
129 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: ur, ut, uz
132 CHARACTER(LEN=2) :: np
134 IF (
PRESENT(opt_density))
CALL error_petsc(
'density should not be present for test 9')
144 ur = r**3*cos(2*pi*z)*sin(t)
145 ut = r**2*sin(2*pi*z)*sin(t)
146 uz = -(2*r**2/pi)*sin(2*pi*z)*sin(t)
147 IF (m==0 .AND. type==1)
THEN 148 vv = r**3*cos(2*pi*z)*cos(t) &
149 + (ur*2*r**2*cos(2*pi*z) - ut*r*sin(2*pi*z) &
150 - uz*r**3*2*pi*sin(2*pi*z))*sin(t) &
151 - (1/re)*(8*r-(2*pi)**2*r**3)*cos(2*pi*z)*sin(t)
152 ELSE IF (m==0 .AND. type==3)
THEN 153 vv = r**2*sin(2*pi*z)*cos(t) &
154 + (ur*2*r*sin(2*pi*z) + ut*r**2*cos(2*pi*z)&
155 + uz*r**2*2*pi*cos(2*pi*z))*sin(t) &
156 - (1/re)*(3*sin(2*pi*z)-(2*pi)**2*r**2*sin(2*pi*z))*sin(t)
157 ELSE IF (m==0 .AND. type==5)
THEN 158 vv = -(2*r**2/pi)*sin(2*pi*z)*cos(t) &
159 + (ur*(-(4*r/pi)*sin(2*pi*z)) &
160 + uz*(-4*r**2*cos(2*pi*z)))*sin(t) &
161 - (1/re)*(-(8/pi)+2*pi*4*r**2)*sin(2*pi*z)*sin(t)
166 IF (
TYPE .GE. 5) then
168 +
inputs%gravity_coefficient*opt_tempn(:,type-4,i)
180 INTEGER ,
INTENT(IN) :: TYPE
181 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
182 INTEGER ,
INTENT(IN) :: m
183 REAL(KIND=8),
INTENT(IN) :: t
184 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
185 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: r, z
186 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: ur, ut, uz
196 ur = r**3*cos(2*pi*z)*sin(t)
197 ut = r**2*sin(2*pi*z)*sin(t)
198 uz = -(2*r**2/pi)*sin(2*pi*z)*sin(t)
199 IF(m==0 .AND. type==1)
THEN 200 vv = -r**2*sin(2*pi*z)*sin(t) &
201 + (ur*2*r*sin(2*pi*z)+uz*r**2*2*pi*cos(2*pi*z))*cos(t) &
202 -
inputs%temperature_diffusivity(1)*(4*sin(2*pi*z) &
203 -(2*pi)**2*r**2*sin(2*pi*z))*cos(t)
204 ELSE IF (m==0 .AND. type==2)
THEN 206 ELSE IF (m==1 .AND. type==1)
THEN 207 vv = -r**2*cos(2*pi*z)*sin(t) &
208 + (ur*2*r*cos(2*pi*z)-uz*2*pi*r**2*sin(2*pi*z))*cos(t) &
209 -
inputs%temperature_diffusivity(1)*(4*cos(2*pi*z)-cos(2*pi*z) &
210 -(2*pi)**2*r**2*cos(2*pi*z))*cos(t)
211 ELSE IF (m==1 .AND. type==2)
THEN 212 vv = -ut*r*cos(2*pi*z)*cos(t)
213 ELSE IF (m==2 .AND. type==1)
THEN 214 vv = ut*4*r*cos(2*pi*z)*cos(t)
215 ELSE IF (m==2 .AND. type==2)
THEN 216 vv = -2*r**2*cos(2*pi*z)*sin(t) &
217 + (ur*4*r*cos(2*pi*z)-uz*4*pi*r**2*sin(2*pi*z))*cos(t) &
218 -
inputs%temperature_diffusivity(1)*(8*cos(2*pi*z)-8*cos(2*pi*z) &
219 - 2*(2*pi)**2*r**2*cos(2*pi*z))*cos(t)
242 FUNCTION vv_exact(TYPE,rr,m,t) RESULT(vv)
244 INTEGER ,
INTENT(IN) :: TYPE
245 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
246 INTEGER,
INTENT(IN) :: m
247 REAL(KIND=8),
INTENT(IN) :: t
248 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
249 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: r, z
259 vv(:) = r**3*cos(2*pi*z)
260 ELSE IF (
TYPE == 2) then
262 ELSE IF (
TYPE == 3) then
263 vv(:) = r**2*sin(2*pi*z)
264 ELSE IF (
TYPE == 4) then
266 ELSE IF (
TYPE == 5) then
267 vv(:) = -(2*r**2/pi)*sin(2*pi*z)
268 ELSE IF (
TYPE == 6) then
271 vv(:) = vv(:) * sin(t)
292 FUNCTION pp_exact(TYPE,rr,m,t) RESULT (vv)
294 INTEGER ,
INTENT(IN) :: TYPE
295 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
296 INTEGER ,
INTENT(IN) :: m
297 REAL(KIND=8),
INTENT(IN) :: t
298 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
299 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: r, z
309 vv(:) = 0.5d0*((r**3*cos(2*pi*z))**2 &
310 + (r**2*sin(2*pi*z))**2 &
311 + ((2*r**2/pi)*sin(2*pi*z))**2)*sin(t)**2
312 ELSE IF (
TYPE == 2) then
321 INTEGER ,
INTENT(IN) :: TYPE
322 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
323 INTEGER ,
INTENT(IN) :: m
324 REAL(KIND=8),
INTENT(IN) :: t
325 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
326 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: r, z
336 IF(m==0 .AND. type==1)
THEN 337 vv = r**2*sin(2*pi*z)*cos(t)
338 ELSE IF (m==0 .AND. type==2)
THEN 340 ELSE IF (m==1 .AND. type==1)
THEN 341 vv = r**2*cos(2*pi*z)*cos(t)
342 ELSE IF (m==1 .AND. type==2)
THEN 344 ELSE IF (m==2 .AND. type==1)
THEN 346 ELSE IF (m==2 .AND. type==2)
THEN 347 vv = 2*r**2*cos(2*pi*z)*cos(t)
397 INTEGER ,
INTENT(IN) ::
TYPE, n_start
398 INTEGER,
INTENT(IN) :: mode
399 REAL(KIND=8),
INTENT(IN) :: t
400 REAL(KIND=8),
DIMENSION(H_Mesh%np) :: vv
408 n=h_mesh%np; r=t; n=type; n=mode; n=n_start
subroutine, public init_temperature(mesh, time, dt, list_mode, tempn_m1, tempn)
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 error_petsc(string)
real(kind=8) function, dimension(size(rr, 2)), public vv_exact(TYPE, rr, m, t)
real(kind=8) function, dimension(h_mesh%np), public extension_velocity(TYPE, H_mesh, mode, t, n_start)
real(kind=8) function, dimension(size(rr, 2)), public temperature_exact(TYPE, rr, m, t)
real(kind=8) function, dimension(size(rr, 2)), public pp_exact(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)
real(kind=8) function, dimension(size(rr, 2)), public source_in_temperature(TYPE, rr, m, t)