42 un_m1, un, pn_m1, pn, phin_m1, phin)
45 REAL(KIND=8),
INTENT(OUT):: time
46 REAL(KIND=8),
INTENT(IN) :: dt
47 INTEGER,
DIMENSION(:),
INTENT(IN) :: list_mode
48 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(OUT):: un_m1, un
49 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(OUT):: pn_m1, pn, phin_m1, phin
51 REAL(KIND=8),
DIMENSION(mesh_c%np) :: pn_m2
54 DO i= 1,
SIZE(list_mode)
58 un_m1(:,j,i) =
vv_exact(j,mesh_f%rr,mode,time-dt)
59 un(:,j,i) =
vv_exact(j,mesh_f%rr,mode,time)
63 pn_m2(:) =
pp_exact(j,mesh_c%rr,mode,time-2*dt)
64 pn_m1(:,j,i) =
pp_exact(j,mesh_c%rr,mode,time-dt)
65 pn(:,j,i) =
pp_exact(j,mesh_c%rr,mode,time)
66 phin_m1(:,j,i) = pn_m1(:,j,i) - pn_m2(:)
67 phin(:,j,i) = pn(:,j,i) - pn_m1(:,j,i)
76 REAL(KIND=8),
INTENT(OUT):: time
77 REAL(KIND=8),
INTENT(IN) :: dt
78 INTEGER,
DIMENSION(:),
INTENT(IN) :: list_mode
79 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(OUT):: tempn_m1, tempn
83 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, r,
z, lambda
128 REAL(KIND=8) :: alpha, r0 = 0.5d0, pi = acos(-1.d0)
130 CHARACTER(LEN=2) :: np
132 IF (present(opt_density)) CALL
error_petsc(
'density should not be present for test 34')
134 alpha = inputs%gravity_coefficient
141 lambda(j) = inputs%temperature_diffusivity(1)
143 lambda(j) = inputs%temperature_diffusivity(2)
149 ELSE IF (type==6)
THEN
157 vv = vv -(4*pi*r*(4*pi**2*r**4 - 8*pi**2*r**3*r0 + r0**2 + r**2*(-3 + 4*pi**2*r0**2))*cos(time)*cos(2*pi*
z) + &
158 (r - r0)*re*cos(time)**2*(14*r**3 - 5*r**2*r0 - 5*r*r0**2 + 2*r0**3 + &
159 (36*pi**2*r**5 - 84*pi**2*r**4*r0 + 5*r*r0**2 - 2*r0**3 + 2*r**3*(-7 + 30*pi**2*r0**2) + &
160 r**2*(5*r0 - 12*pi**2*r0**3))*cos(4*pi*
z)) - &
161 4*pi*r**3*(r - r0)**2*re*cos(2*pi*
z)*sin(time))/(2.*r**3*re)
162 ELSE IF (mode==1)
THEN
163 vv = vv -2*(2*pi*r*(2*pi**2*r**4 - r*r0 - 4*pi**2*r**3*r0 + r0**2 + r**2*(-1 + 2*pi**2*r0**2))*cos(time)*cos(2*pi*
z) + &
164 ((3*r**2 - 4*r*r0 + r0**2)*re*cos(time)**2*(3*r**2 - r0**2 + &
165 (8*pi**2*r**4 - 16*pi**2*r**3*r0 + r0**2 + r**2*(-3 + 8*pi**2*r0**2))*cos(4*pi*
z)))/2. - &
166 pi*r**3*(r - r0)**2*re*cos(2*pi*
z)*sin(time))/(r**3*re)
167 ELSE IF (mode==2)
THEN
168 vv = vv -((r - r0)*cos(time)**2*(4*r**2 - r*r0 - r0**2 + (12*pi**2*r**4 - &
169 28*pi**2*r**3*r0 + r0**2 + 4*r**2*(-1.d0 + 5*pi**2*r0**2) + &
170 r*(r0 - 4*pi**2*r0**3))*cos(4*pi*
z)))/(2.*r**2)
172 ELSE IF (type==2)
THEN
174 vv = vv + ((r - r0)**2*cos(time)*(-4*pi*r*cos(2*pi*
z) + re*cos(time)*(4*pi**2*r**4 - r*r0 - 8*pi**2*r**3*r0 + r0**2 + &
175 r**2*(-3.d0 + 4*pi**2*r0**2) + (3*r**2 + r*r0 - r0**2)*cos(4*pi*
z))))/(r**3*re)
176 ELSE IF (mode==2)
THEN
177 vv = vv + ((r - r0)**2*cos(time)**2*(4*pi**2*r**4 - r*r0 - 8*pi**2*r**3*r0 + r0**2 + &
178 r**2*(-3.d0 + 4*pi**2*r0**2) + (3*r**2 + r*r0 - r0**2)*cos(4*pi*
z)))/(2.*r**3)
180 ELSE IF (type==3)
THEN
182 vv = vv + (2*pi*(-3*pi*r*(r - r0)**3*(3*r - r0)*re*cos(time)**2 + &
183 (4*pi**2*r**4 - 8*pi**2*r**3*r0 + r0**2 + r**2*(-3.d0 + 4*pi**2*r0**2))*cos(time)*cos(2*pi*
z) - &
184 r**2*(r - r0)**2*re*cos(2*pi*
z)*sin(time)))/(r**2*re)
185 ELSE IF (mode==1)
THEN
186 vv = vv + (4*pi*r*(2*pi**2*r**4 - r*r0 - 4*pi**2*r**3*r0 + r0**2 + &
187 r**2*(-1 + 2*pi**2*r0**2))*cos(time)*cos(2*pi*
z) + &
188 ((r - r0)**3*(3*r - r0)*re*cos(time)**2*(-1.d0 - 16*pi**2*r**2 + cos(4*pi*
z)))/2. - &
189 2*pi*r**3*(r - r0)**2*re*cos(2*pi*
z)*sin(time))/(r**3*re)
190 ELSE IF (mode==2)
THEN
191 vv = vv + ((r - r0)**3*(3*r - r0)*cos(time)**2*(-1.d0 - 4*pi**2*r**2 + cos(4*pi*
z)))/(2.*r**3)
193 ELSE IF (type==4)
THEN
195 vv = vv + ((r - r0)**2*cos(time)*(-8*pi*r*cos(2*pi*
z) + re*cos(time)*((-3*r + r0)**2 + &
196 (8*pi**2*r**4 + 6*r*r0 - 16*pi**2*r**3*r0 - r0**2 + r**2*(-9.d0 + 8*pi**2*r0**2))*cos(4*pi*
z))))/(2.*r**3*re)
197 ELSE IF (mode==2)
THEN
198 vv = vv + ((r - r0)**2*cos(time)**2*(2*r - r0 + (2*r*(-1.d0 + pi*(r - r0))*(1 + pi*(r - r0)) + r0)*cos(4*pi*
z)))/r**2
200 ELSE IF (type==5)
THEN
202 vv = vv + ((4*(12*pi**2*r**4 - 16*pi**2*r**3*r0 - r0**2 + &
203 r**2*(-3.d0 + 4*pi**2*r0**2))*cos(time)*sin(2*pi*
z) - &
204 4*r**2*(3*r**2 - 4*r*r0 + r0**2)*re*sin(time)*sin(2*pi*
z) + &
205 pi*r*(r - r0)**2*(12*pi**2*r**4 - r*r0 - 24*pi**2*r**3*r0 + 2*r0**2 + &
206 4*r**2*(-1.d0 + 3*pi**2*r0**2))*re*4*cos(time)**2*sin(4*pi*
z)))/(4.*r**3*re)
207 ELSE IF (mode==1)
THEN
208 vv = vv + (4*(-r0 + pi**2*r*(3*r**2 - 4*r*r0 + r0**2))*cos(time)*sin(2*pi*
z) - &
209 r*(3*r**2 - 4*r*r0 + r0**2)*re*sin(time)*sin(2*pi*
z) + &
210 pi*(r - r0)**2*(16*pi**2*r**4 - 2*r*r0 - 32*pi**2*r**3*r0 + 3*r0**2 + &
211 r**2*(-5.d0 + 16*pi**2*r0**2))*re*cos(time)**2*sin(4*pi*
z))/(r**2*re)
212 ELSE IF (mode==2)
THEN
213 vv = vv + (pi*(r - r0)**2*(4*pi**2*r**4 - r*r0 - 8*pi**2*r**3*r0 + r0**2 + &
214 r**2*(-1.d0 + 4*pi**2*r0**2))*cos(time)**2*sin(4*pi*
z))/r**2
216 ELSE IF (type==6)
THEN
218 vv = vv + (2*(2*pi**2*r*(r - r0)**2 - r0)*cos(time)*sin(2*pi*
z) - r*(r - r0)**2*re*sin(time)*sin(2*pi*
z) -&
219 4*pi*r*(r - r0)**3*re*cos(time)**2*sin(4*pi*
z))/(r**2*re)
220 ELSE IF (mode==2)
THEN
221 vv = vv -2*pi*(r - r0)**3*cos(time)**2*sin(4*pi*
z)/r
225 IF ((type==1).AND.(mode==1))
THEN
226 vv = vv + 3*r**2*cos(time)*sin(2*pi*
z)
227 ELSE IF ((type==4).AND.(mode==1))
THEN
228 vv = vv - r**2*cos(time)*sin(2*pi*
z)
229 ELSE IF ((type==5).AND.(mode==1))
THEN
230 vv = vv + 2*pi*r**3*cos(time)*cos(2*pi*
z)
235 vv = vv + r**7 * (r - r0)**2 * cos(time)**4 * (215.d0 + 204 * pi**2 * r**2 + &
236 (215.d0 - 204 * pi**2 * r**2) * cos(4*pi *
z)) * sin(2*pi*
z)**2 / &
238 ELSE IF (mode == 1)
THEN
239 vv = vv - 5 * r**7 * (r - r0)**2 * cos(time)**4 * (-11.d0 - 12 * pi**2 * r**2 + &
240 (-11.d0 + 12 * pi**2 * r**2) * cos(4*pi*
z)) * sin(2*pi*
z)**2 / &
242 ELSE IF (mode == 2)
THEN
243 vv = vv - 7 * r**7 * (r - r0)**2 * cos(time)**4 * sin(4*pi*
z)**2 / &
245 ELSE IF (mode == 3)
THEN
246 vv = vv + r**7 * (r - r0)**2 * cos(time)**4 * (-19.d0 - 12 * pi**2 *r**2 + &
247 (-19.d0 + 12 * pi**2 *r**2) * cos(4*pi*
z)) * sin(2*pi*
z)**2 / &
249 ELSE IF (mode == 4)
THEN
250 vv = vv + 3 * r**7 * (r - r0)**2 * cos(time)**4 * (-5.d0 - 4 * pi**2 * r**2 + &
251 (-5.d0 + 4 * pi**2 * r**2) * cos(4*pi*
z)) * sin(2*pi*
z)**2 / &
254 ELSE IF (
TYPE == 2) then
256 vv = vv - 6 * r**7 * (r - r0)**2 * cos(time)**4 * (-6.d0 - 5 * pi**2 * r**2 + &
257 (-6.d0 + 5.d0 * pi**2 * r**2) * cos(4*pi*
z)) * sin(2*pi*
z)**2 / &
259 ELSE IF (mode == 2)
THEN
260 vv = vv + 2 * r**7 * (r - r0)**2 * cos(time)**4 * (13.d0 + 12 * pi**2 * r**2 + &
261 (13.d0 - 12 * pi**2 * r**2) * cos(4*pi*
z)) * sin(2*pi*
z)**2 / &
263 ELSE IF (mode == 3)
THEN
264 vv = vv + 2 * r**7 * (r - r0)**2 * cos(time)**4 * (2.d0 + 3 * pi**2 * r**2 + &
265 (2.d0 - 3 * pi**2 * r**2) * cos(4*pi*
z)) * sin(2*pi*
z)**2 / &
267 ELSE IF (mode == 4)
THEN
268 vv = vv - r**7 * (r - r0)**2 * cos(time)**4 * sin(4*pi*
z)**2 / &
271 ELSE IF (
TYPE == 3) then
273 vv = vv + r**7 * (r - r0)**2 * cos(time)**4 * (15.d0 + 8 * pi**2 * r**2 + &
274 (15.d0 - 8 * pi**2 * r**2) * cos(4*pi*
z)) * sin(2*pi*
z)**2 / &
276 ELSE IF (mode == 1)
THEN
277 vv = vv + r**7 * (r - r0)**2 * cos(time)**4 * (12.d0 + 7 * pi**2 * r**2 + &
278 (12.d0 - 7 * pi**2 * r**2) * cos(4*pi*
z)) * sin(2*pi*
z)**2 / &
280 ELSE IF (mode == 2)
THEN
281 vv = vv + r**7 * (r - r0)**2 * cos(time)**4 * (5.d0 + 4 * pi**2 * r**2 + &
282 (5.d0 - 4 * pi**2 * r**2) * cos(4*pi*
z)) * sin(2*pi*
z)**2 / &
284 ELSE IF (mode == 3)
THEN
285 vv = vv + 2 * pi**2 * r**9 * (r - r0)**2 * cos(time)**4 * sin(2*pi*
z)**4 / &
287 ELSE IF (mode == 4)
THEN
288 vv = vv - r**7 * (r - r0)**2 * cos(time)**4 * sin(4*pi*
z)**2 / &
291 ELSE IF (
TYPE == 4) then
293 vv = vv + r**7 * (r - r0)**2 * cos(time)**4 * (25.d0 + 8 * pi**2 * r**2 + &
294 (25.d0 - 8 * pi**2 * r**2) * cos(4*pi*
z)) * sin(2*pi*
z)**2 / &
296 ELSE IF (mode == 2)
THEN
297 vv = vv + r**7 * (r - r0)**2 * cos(time)**4 * (61.d0 + 24 * pi**2 * r**2 + &
298 (61.d0 - 24 * pi**2 * r**2) * cos(4*pi*
z)) * sin(2*pi*
z)**2 / &
300 ELSE IF (mode == 3)
THEN
301 vv = vv + r**7 * (r - r0)**2 * cos(time)**4 * (17.d0 + 8 * pi**2 * r**2 + &
302 (17.d0 - 8 * pi**2 * r**2) * cos(4*pi*
z)) * sin(2*pi*
z)**2 / &
304 ELSE IF (mode == 4)
THEN
305 vv = vv + r**7 * (r - r0)**2 * cos(time)**4 * (15.d0 + 8 * pi**2 * r**2 + &
306 (15.d0 - 8 * pi**2 * r**2) * cos(4*pi*
z)) * sin(2*pi*
z)**2 / &
309 ELSE IF (
TYPE == 5) then
311 vv = vv + pi * r**8 * (-215.d0 + 136 * pi**2 * r**2) * (r - r0)**2 * cos(time)**4 * &
312 cos(2*pi*
z) * sin(2*pi*
z)**3 / (4 * lambda**2)
313 ELSE IF (mode == 1)
THEN
314 vv = vv + 5 * pi * r**8 * (-11.d0 + 8 * pi**2 * r**2) * (r - r0)**2 * cos(time)**4 * &
315 cos(2*pi*
z) * sin(2*pi*
z)**3 / lambda**2
316 ELSE IF (mode == 2)
THEN
317 vv = vv + 14 * pi * r**8 * (r - r0)**2 * cos(time)**4 * &
318 cos(2*pi*
z) * sin(2*pi*
z)**3 / lambda**2
319 ELSE IF (mode == 3)
THEN
320 vv = vv - pi * r**8 * (-19.d0 + 8 * pi**2 * r**2) * (r - r0)**2 * cos(time)**4 * &
321 cos(2*pi*
z) * sin(2*pi*
z)**3 / lambda**2
322 ELSE IF (mode == 4)
THEN
323 vv = vv - pi * r**8 * (-15.d0 + 8 * pi**2 * r**2) * (r - r0)**2 * cos(time)**4 * &
324 cos(2*pi*
z) * sin(2*pi*
z)**3 / (4 * lambda**2)
326 ELSE IF (
TYPE == 6) then
328 vv = vv + 8 * pi * r**8 * (-9.d0 + 5 * pi**2 * r**2) * (r - r0)**2 * cos(time)**4 * &
329 cos(2*pi*
z) * sin(2*pi*
z)**3 / lambda**2
330 ELSE IF (mode == 2)
THEN
331 vv = vv + 4 * pi * r**8 * (-13.d0 + 8 * pi**2 * r**2) * (r - r0)**2 * cos(time)**4 * &
332 cos(2*pi*
z) * sin(2*pi*
z)**3 / lambda**2
333 ELSE IF (mode == 3)
THEN
334 vv = vv + 8 * pi * r**8 * (-1.d0 + pi**2 * r**2) * (r - r0)**2 * cos(time)**4 * &
335 cos(2*pi*
z) * sin(2*pi*
z)**3 / lambda**2
336 ELSE IF (mode == 4)
THEN
337 vv = vv + 2 * pi * r**8 * (r - r0)**2 * cos(time)**4 * &
338 cos(2*pi*
z) * sin(2*pi*
z)**3 / lambda**2
352 INTEGER ,
INTENT(IN) :: type
353 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
354 INTEGER ,
INTENT(IN) :: m
355 REAL(KIND=8),
INTENT(IN) ::
t
356 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv, r,
z, c, lambda
358 REAL(KIND=8) :: r0 = 0.5d0, pi = acos(-1.d0)
365 c(i) = inputs%vol_heat_capacity(1)
367 c(i) = inputs%vol_heat_capacity(2)
373 lambda(i) = inputs%temperature_diffusivity(1)
375 lambda(i) = inputs%temperature_diffusivity(2)
381 vv = ((-9*r + 4*pi**2*r**3 + 4*r0 - 4*pi**2*r**2*r0) * lambda * cos(
t) + &
382 c * r**2 * (-r + r0) * sin(
t)) * sin(2*pi*
z) / lambda
384 vv = - ((-3*r0 + 4*r*(2.d0 + pi**2*r*(-r + r0))) * lambda * cos(
t) + &
385 c * r**2 * (r - r0) * sin(
t)) * sin(2*pi*
z) / lambda
397 vv(i) = vv(i) + 3 * c(i) * pi * r(i) * (r(i) - r0)**2 * r0 * &
398 cos(
t)**2 * sin(4*pi*
z(i)) / (2 * lambda(i))
404 vv(i) = vv(i) + 2 * c(i) * pi * r(i) * (r(i) - r0)**2 * r0 * &
405 cos(
t)**2 * sin(4*pi*
z(i)) / lambda(i)
411 vv(i) = vv(i) + c(i) * pi * r(i) * (r(i) - r0)**2 * r0 * &
412 cos(
t)**2 * sin(4*pi*
z(i)) / (2 *lambda(i))
437 INTEGER ,
INTENT(IN) :: type
438 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
439 INTEGER,
INTENT(IN) :: m
440 REAL(KIND=8),
INTENT(IN) ::
t
441 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv, r,
z
442 REAL(KIND=8) :: r0 = 0.5d0, pi = acos(-1.d0)
448 IF ((m==0).OR.(m==1))
THEN
449 vv = -2*pi*(r-r0)**2*cos(
t)*cos(2*pi*
z)
453 ELSE IF (type==3)
THEN
454 IF ((m==0).OR.(m==1))
THEN
455 vv = 2*pi*(r-r0)**2*cos(
t)*cos(2*pi*
z)
459 ELSE IF (type==5)
THEN
460 IF ((m==0).OR.(m==1))
THEN
461 vv = (r-r0)*cos(
t)*sin(2*pi*
z)/r * (3*r-r0)
465 ELSE IF (type==6)
THEN
467 vv = (r-r0)*cos(
t)*sin(2*pi*
z)/r * (r-r0)
497 INTEGER ,
INTENT(IN) :: type
498 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
499 INTEGER ,
INTENT(IN) :: m
500 REAL(KIND=8),
INTENT(IN) ::
t
501 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv, r,
z
502 REAL(KIND=8) :: pi = acos(-1.d0)
507 IF ((type==1).AND.(m==1))
THEN
508 vv = r**3*sin(2*pi*
z)*cos(
t)
519 INTEGER ,
INTENT(IN) :: type
520 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
521 INTEGER ,
INTENT(IN) :: m
522 REAL(KIND=8),
INTENT(IN) ::
t
523 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv, r,
z, lambda
524 REAL(KIND=8) :: r0=0.5d0, pi = acos(-1.d0)
532 lambda(i) = inputs%temperature_diffusivity(1)
534 lambda(i) = inputs%temperature_diffusivity(2)
538 IF ((type==1).AND.((m==0).OR.(m==1)))
THEN
539 vv = r**2*(r-r0)*sin(2*pi*
z)*cos(
t) / lambda
586 INTEGER ,
INTENT(IN) :: type, n_start
587 INTEGER,
INTENT(IN) :: mode
588 REAL(KIND=8),
INTENT(IN) ::
t
589 REAL(KIND=8),
DIMENSION(H_Mesh%np) :: vv
597 n=h_mesh%np; r=
t; n=type; n=mode; n=n_start
632 FUNCTION hexact(H_mesh, TYPE, rr, m, mu_H_field, t) RESULT(vv)
635 INTEGER ,
INTENT(IN) :: type
636 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
637 INTEGER ,
INTENT(IN) :: m
638 REAL(KIND=8),
INTENT(IN) ::
t
639 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: mu_h_field
640 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv, r,
z
641 REAL(KIND=8) :: r0 = 0.5d0, pi = acos(-1.d0)
649 vv = 2 * pi * r**3 * sin(2*pi*
z) * cos(
t)
653 ELSE IF (
TYPE == 2) then
655 vv = 2 * pi * r**3 * sin(2*pi*
z) * cos(
t)
659 ELSE IF (
TYPE == 3) then
661 vv = - 2 * pi * r**3 * sin(2*pi*
z) * cos(
t)
665 ELSE IF (
TYPE == 4) then
667 vv = - 2 * pi * r**3 * sin(2*pi*
z) * cos(
t)
671 ELSE IF (
TYPE == 5) then
673 vv = 4 * r**2 * cos(2*pi*
z) * cos(
t)
674 ELSE IF (m == 1)
THEN
675 vv = - r**2 * cos(2*pi*
z) * cos(
t)
681 vv = 4 * r**2 * cos(2*pi*
z) * cos(
t)
689 i=h_mesh%np; i=
SIZE(mu_h_field);
694 FUNCTION phiexact(TYPE, rr, m, mu_phi,t) RESULT(vv)
696 INTEGER ,
INTENT(IN) :: type
697 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
698 INTEGER ,
INTENT(IN) :: m
699 REAL(KIND=8),
INTENT(IN) :: mu_phi,
t
700 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
708 n=type; n=
SIZE(rr,1); n=m; r=mu_phi; r=
t
713 FUNCTION jexact_gauss(TYPE, rr, m, mu_phi, sigma, mu_H, t, mesh_id, opt_B_ext) RESULT(vv)
715 INTEGER ,
INTENT(IN) :: type
716 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: rr
717 INTEGER ,
INTENT(IN) :: m
718 REAL(KIND=8),
INTENT(IN) :: mu_phi, sigma, mu_h,
t
719 INTEGER ,
INTENT(IN) :: mesh_id
720 REAL(KIND=8),
DIMENSION(6),
OPTIONAL,
INTENT(IN) :: opt_b_ext
721 REAL(KIND=8) :: vv, r,
z
722 REAL(KIND=8) :: r0 = 0.5d0, pi = acos(-1.d0)
730 vv = 4 * pi**2 * r**3 * cos(2*pi*
z) * cos(
t)
731 ELSE IF (m == 1)
THEN
732 vv = 4 * r * cos(2*pi*
z) * cos(
t)
736 ELSE IF (
TYPE == 2) then
738 vv = r * (1.d0 + 4 * pi**2 * r**2) * cos(2*pi*
z) * cos(
t)
742 ELSE IF (
TYPE == 3) then
744 vv = 4 * r * (-2.d0 + pi**2 * r**2) * cos(2*pi*
z) * cos(
t)
745 ELSE IF (m == 1)
THEN
746 vv = 2 * r * cos(2*pi*
z) * cos(
t)
750 ELSE IF (
TYPE == 4) then
752 vv = 4 * r * (-2.d0 + pi**2 * r**2) * cos(2*pi*
z) * cos(
t)
756 ELSE IF (
TYPE == 5) then
758 vv = - 8 * pi * r**2 * sin(2*pi*
z) * cos(
t)
759 ELSE IF (m == 1)
THEN
760 vv = - 2 * pi * r**2 * sin(2*pi*
z) * cos(
t)
766 vv = - 8 * pi * r**2 * sin(2*pi*
z) * cos(
t)
774 r=mu_phi; r=sigma; r=mu_h; n=mesh_id
775 IF (present(opt_b_ext)) r=opt_b_ext(1)
782 INTEGER,
INTENT(IN) :: type
783 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: rr
784 INTEGER,
INTENT(IN) :: m
785 REAL(KIND=8),
INTENT(IN) :: mu_phi, sigma, mu_h,
t
794 r=rr(1); r=mu_phi; r=sigma; r=mu_h; r=
t; n=type; n=m
799 SUBROUTINE init_maxwell(H_mesh, phi_mesh, time, dt, mu_H_field, mu_phi, &
800 list_mode, hn1, hn, phin1, phin)
803 REAL(KIND=8),
INTENT(OUT):: time
804 REAL(KIND=8),
INTENT(IN) :: dt
805 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: mu_h_field
806 REAL(KIND=8),
INTENT(IN) :: mu_phi
807 INTEGER,
DIMENSION(:),
INTENT(IN) :: list_mode
808 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(OUT):: hn, hn1
809 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(OUT):: phin, phin1
814 DO i=1,
SIZE(list_mode)
815 hn1(:,k,i) =
hexact(h_mesh,k, h_mesh%rr, list_mode(i), mu_h_field, time)
816 IF (inputs%nb_dom_phi>0)
THEN
818 phin1(:,k,i) =
phiexact(k, phi_mesh%rr, list_mode(i) , mu_phi, time)
826 DO i=1,
SIZE(list_mode)
827 hn(:,k,i) =
hexact(h_mesh,k, h_mesh%rr, list_mode(i), mu_h_field, time)
828 IF (inputs%nb_dom_phi>0)
THEN
830 phin(:,k,i) =
phiexact(k, phi_mesh%rr, list_mode(i), mu_phi, time)
section doc_intro_frame_work_num_app Numerical approximation subsection doc_intro_fram_work_num_app_Fourier_FEM Fourier Finite element representation The SFEMaNS code uses a hybrid Fourier Finite element formulation The Fourier decomposition allows to approximate the problem’s solutions for each Fourier mode modulo nonlinear terms that are made explicit The variables are then approximated on a meridian section of the domain with a finite element method The numerical approximation of a function f $f f is written in the following generic t
real(kind=8) function, dimension(size(rr, 2)), public source_in_ns_momentum(TYPE, rr, mode, i, time, Re, ty, opt_density, opt_tempn)
real(kind=8) function, dimension(size(rr, 2)), public pp_exact(TYPE, rr, m, t)
real(kind=8) function, dimension(h_mesh%np), public extension_velocity(TYPE, H_mesh, mode, t, n_start)
subroutine, public init_maxwell(H_mesh, phi_mesh, time, dt, mu_H_field, mu_phi, list_mode, Hn1, Hn, phin1, phin)
real(kind=8) function, public kelvin_force_coeff(temp)
real(kind=8) function, public jexact_gauss(TYPE, rr, m, mu_phi, sigma, mu_H, t, mesh_id, opt_B_ext)
real(kind=8) function, dimension(size(rr, 2)), public temperature_exact(TYPE, rr, m, t)
real(kind=8) function, dimension(size(rr, 2)), public vv_exact(TYPE, rr, m, t)
real(kind=8) function, dimension(size(rr, 2)), public phiexact(TYPE, rr, m, mu_phi, t)
real(kind=8) function, dimension(size(rr, 2)), public source_in_temperature(TYPE, rr, m, t)
real(kind=8) function, public eexact_gauss(TYPE, rr, m, mu_phi, sigma, mu_H, t)
subroutine, public init_velocity_pressure(mesh_f, mesh_c, time, dt, list_mode, un_m1, un, pn_m1, pn, phin_m1, phin)
subroutine error_petsc(string)
real(kind=8) function, dimension(size(rr, 2)), public hexact(H_mesh, TYPE, rr, m, mu_H_field, t)
subroutine, public init_temperature(mesh, time, dt, list_mode, tempn_m1, tempn)
section doc_intro_frame_work_num_app Numerical approximation subsection doc_intro_fram_work_num_app_Fourier_FEM Fourier Finite element representation The SFEMaNS code uses a hybrid Fourier Finite element formulation The Fourier decomposition allows to approximate the problem’s solutions for each Fourier mode modulo nonlinear terms that are made explicit The variables are then approximated on a meridian section of the domain with a finite element method The numerical approximation of a function f $f f is written in the following generic z