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)
118 INTEGER ,
INTENT(IN) :: type
119 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
120 INTEGER ,
INTENT(IN) :: mode, i
121 REAL(KIND=8),
INTENT(IN) :: time
122 REAL(KIND=8),
INTENT(IN) :: re
123 CHARACTER(LEN=2),
INTENT(IN) :: ty
124 REAL(KIND=8),
DIMENSION(:,:,:),
OPTIONAL,
INTENT(IN) :: opt_density
125 REAL(KIND=8),
DIMENSION(:,:,:),
OPTIONAL,
INTENT(IN) :: opt_tempn
126 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv, r,
z
127 REAL(KIND=8) :: alpha, r0 = 0.5d0
128 CHARACTER(LEN=2) :: np
130 IF (present(opt_density)) CALL
error_petsc(
'density should not be present for test 33')
132 alpha = inputs%gravity_coefficient
138 ELSE IF (type==6)
THEN
146 vv = vv -(2*r*(r**4 - 2*r**3*r0 + r0**2 + r**2*(-3 + r0**2))*cos(time)*cos(
z) + &
147 (r - r0)*re*cos(time)**2*(14*r**3 - 5*r**2*r0 - 5*r*r0**2 + 2*r0**3 + &
148 (9*r**5 - 21*r**4*r0 + 5*r*r0**2 - 2*r0**3 + r**3*(-14 + 15*r0**2) + r**2*(5*r0 - 3*r0**3))*cos(2*
z)) - &
149 2*r**3*(r - r0)**2*re*cos(
z)*sin(time))/(2.*r**3*re)
150 ELSE IF (mode==1)
THEN
151 vv = vv +(-(r*(r**4 - 2*r*r0 - 2*r**3*r0 + 2*r0**2 + r**2*(-2 + r0**2))*cos(time)*cos(
z)) - &
152 (3*r**2 - 4*r*r0 + r0**2)*re*cos(time)**2*(3*r**2 - r0**2 + (2*r**4 - 4*r**3*r0 + r0**2 + &
153 r**2*(-3 + 2*r0**2))*cos(2*
z)) + r**3*(r - r0)**2*re*cos(
z)*sin(time))/ (r**3*re)
154 ELSE IF (mode==2)
THEN
155 vv = vv -((r - r0)*cos(time)**2*(4*r**2 - r*r0 - r0**2 + (3*r**4 - 7*r**3*r0 + r0**2 + &
156 r**2*(-4 + 5*r0**2) + r*(r0 - r0**3))*cos(2*
z)))/(2.*r**2)
158 ELSE IF (type==2)
THEN
160 vv = vv + ((r - r0)**2*cos(time)*(-2*r*cos(
z) + re*cos(time)*(r**4 - r*r0 - 2*r**3*r0 + &
161 r0**2 + r**2*(-3 + r0**2) + (3*r**2 + r*r0 - r0**2)*cos(2*
z))))/(r**3*re)
162 ELSE IF (mode==2)
THEN
163 vv = vv + ((r - r0)**2*cos(time)**2*(r**4 - r*r0 - 2*r**3*r0 + r0**2 + r**2*(-3 + r0**2) + &
164 (3*r**2 + r*r0 - r0**2)*cos(2*
z)))/(2.*r**3)
166 ELSE IF (type==3)
THEN
168 vv = vv + (-3*r*(r - r0)**3*(3*r - r0)*re*cos(time)**2 + 2*(r**4 - 2*r**3*r0 + r0**2 + &
169 r**2*(-3 + r0**2))*cos(time)*cos(
z) - 2*r**2*(r - r0)**2*re*cos(
z)*sin(time))/(2.*r**2*re)
170 ELSE IF (mode==1)
THEN
171 vv = vv -(-2*r*(r**4 - 2*r*r0 - 2*r**3*r0 + 2*r0**2 + r**2*(-2 + r0**2))*cos(time)*cos(
z) + &
172 (r - r0)**3*(3*r - r0)*re*cos(time)**2*(1 + 4*r**2 - cos(2*
z)) + &
173 2*r**3*(r - r0)**2*re*cos(
z)*sin(time))/(2.*r**3*re)
174 ELSE IF (mode==2)
THEN
175 vv = vv + ((r - r0)**3*(3*r - r0)*cos(time)**2*(-1 - r**2 + cos(2*
z)))/(2.*r**3)
177 ELSE IF (type==4)
THEN
179 vv = vv + ((r - r0)**2*cos(time)*(-4*r*cos(
z) + re*cos(time)*((-3*r + r0)**2 + &
180 (2*r**4 + 6*r*r0 - 4*r**3*r0 - r0**2 + r**2*(-9 + 2*r0**2))*cos(2*
z))))/(2.*r**3*re)
181 ELSE IF (mode==2)
THEN
182 vv = vv + ((r - r0)**2*cos(time)**2*(4*r - 2*r0 + (r*(-4 + (r - r0)**2) + 2*r0)*cos(2*
z)))/(2.*r**2)
184 ELSE IF (type==5)
THEN
186 vv = vv + (((3*r**4 - 4*r**3*r0 - r0**2 + r**2*(-3 + r0**2))*cos(time) + &
187 r*(r - r0)**2*(3*r**4 - r*r0 - 6*r**3*r0 + 2*r0**2 + r**2*(-4 + 3*r0**2))*re*cos(time)**2*cos(
z) - &
188 r**2*(3*r**2 - 4*r*r0 + r0**2)*re*sin(time))*sin(
z))/(r**3*re)
189 ELSE IF (mode==1)
THEN
190 vv = vv + ((3*r**3 - 4*r0 - 4*r**2*r0 + r*r0**2)*cos(time)*sin(
z) - r*(3*r**2 - 4*r*r0 + r0**2)*re*sin(time)*sin(
z) + &
191 ((r - r0)**2*(4*r**4 - 2*r*r0 - 8*r**3*r0 + 3*r0**2 + r**2*(-5 + 4*r0**2))*re*cos(time)**2*sin(2*
z))/2.)/(r**2*re)
192 ELSE IF (mode==2)
THEN
193 vv = vv + ((r - r0)**2*(r**4 - r*r0 - 2*r**3*r0 + r0**2 + r**2*(-1 + r0**2))*cos(time)**2*sin(2*
z))/(2.*r**2)
195 ELSE IF (type==6)
THEN
197 vv = vv -((((-r**3 + 2*r0 + 2*r**2*r0 - r*r0**2)*cos(time) + 4*r*(r - r0)**3*re*cos(time)**2*cos(
z) + &
198 r*(r - r0)**2*re*sin(time))*sin(
z))/(r**2*re))
199 ELSE IF (mode==2)
THEN
200 vv = vv -(((r - r0)**3*cos(time)**2*sin(2*
z))/r)
206 vv = vv - 0.25 * exp(2*
z) * r**7 * (215.d0 + 51*r**2) * (r - r0)**4 * cos(time)**4 * sin(
z)**2
207 ELSE IF (mode == 1)
THEN
208 vv = vv - 5 * exp(2*
z) * r**7 * (11.d0 + 3*r**2) * (r - r0)**4 * cos(time)**4 * sin(
z)**2
209 ELSE IF (mode == 2)
THEN
210 vv = vv + 14 * exp(2*
z) * r**7 * (r - r0)**4 * cos(time)**4 * sin(
z)**2
211 ELSE IF (mode == 3)
THEN
212 vv = vv + exp(2*
z) * r**7 * (19.d0 + 3*r**2) * (r - r0)**4 * cos(time)**4 * sin(
z)**2
213 ELSE IF (mode == 4)
THEN
214 vv = vv + 0.75 * exp(2*
z) * r**7 * (5.d0 + r**2) * (r - r0)**4 * cos(time)**4 * sin(
z)**2
218 ELSE IF (
TYPE == 2) then
220 vv = vv - 3 * exp(2*
z) * r**7 * (24.d0 + 5*r**2) * (r - r0)**4 * cos(time)**4 * sin(
z)**2
221 ELSE IF (mode == 2)
THEN
222 vv = vv - 4 * exp(2*
z) * r**7 * (13.d0 + 3*r**2) * (r - r0)**4 * cos(time)**4 * sin(
z)**2
223 ELSE IF (mode == 3)
THEN
224 vv = vv - exp(2*
z) * r**7 * (8.d0 + 3*r**2) * (r - r0)**4 * cos(time)**4 * sin(
z)**2
225 ELSE IF (mode == 4)
THEN
226 vv = vv + 2 * exp(2*
z) * r**7 * (r - r0)**4 * cos(time)**4 * sin(
z)**2
230 ELSE IF (
TYPE == 3) then
232 vv = vv - exp(2*
z) * r**7 * (15.d0 + 2*r**2) * (r - r0)**4 * cos(time)**4 * sin(
z)**2
233 ELSE IF (mode == 1)
THEN
234 vv = vv - 0.5 * exp(2*
z) * r**7 * (48.d0 + 7*r**2) * (r - r0)**4 * cos(time)**4 * sin(
z)**2
235 ELSE IF (mode == 2)
THEN
236 vv = vv - 2 * exp(2*
z) * r**7 * (5.d0 + r**2) * (r - r0)**4 * cos(time)**4 * sin(
z)**2
237 ELSE IF (mode == 3)
THEN
238 vv = vv - 0.5 * exp(2*
z) * r**9 * (r - r0)**4 * cos(time)**4 * sin(
z)**2
239 ELSE IF (mode == 4)
THEN
240 vv = vv + exp(2*
z) * r**7 * (r - r0)**4 * cos(time)**4 * sin(
z)**2
244 ELSE IF (
TYPE == 4) then
246 vv = vv - 0.5 * exp(2*
z) * r**7 * (25.d0 + 2*r**2) * (r - r0)**4 * cos(time)**4 * sin(
z)**2
247 ELSE IF (mode == 2)
THEN
248 vv = vv - 0.25 * exp(2*
z) * r**7 * (61.d0 + 6*r**2) * (r - r0)**4 * cos(time)**4 * sin(
z)**2
249 ELSE IF (mode == 3)
THEN
250 vv = vv - 0.5 * exp(2*
z) * r**7 * (17.d0 + 2*r**2) * (r - r0)**4 * cos(time)**4 * sin(
z)**2
251 ELSE IF (mode == 4)
THEN
252 vv = vv - 0.125 * exp(2*
z) * r**7 * (15.d0 + 2*r**2) * (r - r0)**4 * cos(time)**4 * sin(
z)**2
256 ELSE IF (
TYPE == 5) then
258 vv = vv - 0.125 * exp(2*
z) * r**8 * (215.d0 + 34*r**2) * (r - r0)**4 * cos(time)**4 * sin(
z)**2
259 ELSE IF (mode == 1)
THEN
260 vv = vv - 2.5 * exp(2*
z) * r**8 * (11.d0 + 2*r**2) * (r - r0)**4 * cos(time)**4 * sin(
z)**2
261 ELSE IF (mode == 2)
THEN
262 vv = vv + 7 * exp(2*
z) * r**8 * (r - r0)**4 * cos(time)**4 * sin(
z)**2
263 ELSE IF (mode == 3)
THEN
264 vv = vv + 0.5 * exp(2*
z) * r**8 * (19.d0 + 2*r**2) * (r - r0)**4 * cos(time)**4 * sin(
z)**2
265 ELSE IF (mode == 4)
THEN
266 vv = vv + 0.125 * exp(2*
z) * r**8 * (15.d0 + 2*r**2) * (r - r0)**4 * cos(time)**4 * sin(
z)**2
270 ELSE IF (
TYPE == 6) then
272 vv = vv - exp(2*
z) * r**8 * (36.d0 + 5*r**2) * (r - r0)**4 * cos(time)**4 * sin(
z)**2
273 ELSE IF (mode == 2)
THEN
274 vv = vv - 2 * exp(2*
z) * r**8 * (13.d0 + 2*r**2) * (r - r0)**4 * cos(time)**4 * sin(
z)**2
275 ELSE IF (mode == 3)
THEN
276 vv = vv - exp(2*
z) * r**8 * (4.d0 + r**2) * (r - r0)**4 * cos(time)**4 * sin(
z)**2
277 ELSE IF (mode == 4)
THEN
278 vv = vv + exp(2*
z) * r**8 * (r - r0)**4 * cos(time)**4 * sin(
z)**2
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, r,
z, c, lambda
300 REAL(KIND=8) :: r0 = 0.5d0
307 c(i) = inputs%vol_heat_capacity(1)
309 c(i) = inputs%vol_heat_capacity(2)
315 lambda(i) = inputs%temperature_diffusivity(1)
317 lambda(i) = inputs%temperature_diffusivity(2)
323 vv = - (-(r**4 + 18*r*r0 - 2*r**3*r0 - 4*r0**2 + r**2*(-16.d0 + r0**2))*lambda*cos(
t) &
324 + c*r**2*(r - r0)**2*sin(
t))*sin(
z)
326 vv = -(-(r**4 + 16*r*r0 - 2*r**3*r0 - 3*r0**2 + r**2*(-15.d0 + r0**2))*lambda*cos(
t) &
327 + c*r**2*(r - r0)**2*sin(
t))*sin(
z)
339 vv(i) = vv(i) + c(i)*(-3*r(i)*(r(i) - r0)**4*cos(
t)**2*sin(2*
z(i)))/4.d0
345 vv(i) = vv(i) - c(i)*r(i)*(r(i) - r0)**4*cos(
t)**2*sin(2*
z(i))
351 vv(i) = vv(i) - c(i)/lambda(i)*(r(i)*(r(i) - r0)**4*cos(
t)**2*sin(2*
z(i)))/4.d0
375 INTEGER ,
INTENT(IN) :: type
376 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
377 INTEGER,
INTENT(IN) :: m
378 REAL(KIND=8),
INTENT(IN) ::
t
379 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv, r,
z
380 REAL(KIND=8) :: r0 = 0.5d0
386 IF ((m==0).OR.(m==1))
THEN
387 vv = -(r-r0)**2*cos(
t)*cos(
z)
391 ELSE IF (type==3)
THEN
392 IF ((m==0).OR.(m==1))
THEN
393 vv = (r-r0)**2*cos(
t)*cos(
z)
397 ELSE IF (type==5)
THEN
398 IF ((m==0).OR.(m==1))
THEN
399 vv = (r-r0)*cos(
t)*sin(
z)/r * (3*r-r0)
403 ELSE IF (type==6)
THEN
405 vv = (r-r0)*cos(
t)*sin(
z)/r * (r-r0)
434 INTEGER ,
INTENT(IN) :: type
435 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
436 INTEGER ,
INTENT(IN) :: m
437 REAL(KIND=8),
INTENT(IN) ::
t
438 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
446 n=type; n=
SIZE(rr,1); n=m; r=
t
453 INTEGER ,
INTENT(IN) :: type
454 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
455 INTEGER ,
INTENT(IN) :: m
456 REAL(KIND=8),
INTENT(IN) ::
t
457 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv, r,
z
458 REAL(KIND=8) :: r0=0.5d0
463 IF ((type==1).AND.((m==0).OR.(m==1)))
THEN
464 vv = r**2*(r-r0)**2*sin(
z)*cos(
t)
510 INTEGER ,
INTENT(IN) :: type, n_start
511 INTEGER,
INTENT(IN) :: mode
512 REAL(KIND=8),
INTENT(IN) ::
t
513 REAL(KIND=8),
DIMENSION(H_Mesh%np) :: vv
521 n=h_mesh%np; r=
t; n=type; n=mode; n=n_start
556 FUNCTION hexact(H_mesh, TYPE, rr, m, mu_H_field, t) RESULT(vv)
559 INTEGER ,
INTENT(IN) :: type
560 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
561 INTEGER ,
INTENT(IN) :: m
562 REAL(KIND=8),
INTENT(IN) ::
t
563 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: mu_h_field
564 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv, r,
z
572 vv = - exp(
z) * r**3 * cos(
t)
576 ELSE IF (
TYPE == 2) then
578 vv = - exp(
z) * r**3 * cos(
t)
582 ELSE IF (
TYPE == 3) then
584 vv = exp(
z) * r**3 * cos(
t)
588 ELSE IF (
TYPE == 4) then
590 vv = exp(
z) * r**3 * cos(
t)
594 ELSE IF (
TYPE == 5) then
596 vv = 4 * exp(
z) * r**2 * cos(
t)
597 ELSE IF (m == 1)
THEN
598 vv = - exp(
z) * r**2 * cos(
t)
604 vv = 4 * exp(
z) * r**2 * cos(
t)
612 n=h_mesh%np; n=
SIZE(mu_h_field);
617 FUNCTION phiexact(TYPE, rr, m, mu_phi,t) RESULT(vv)
619 INTEGER ,
INTENT(IN) :: type
620 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
621 INTEGER ,
INTENT(IN) :: m
622 REAL(KIND=8),
INTENT(IN) :: mu_phi,
t
623 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
631 n=type; n=
SIZE(rr,1); n=m; r=mu_phi; r=
t
636 FUNCTION jexact_gauss(TYPE, rr, m, mu_phi, sigma, mu_H, t, mesh_id, opt_B_ext) RESULT(vv)
638 INTEGER ,
INTENT(IN) :: type
639 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: rr
640 INTEGER ,
INTENT(IN) :: m
641 REAL(KIND=8),
INTENT(IN) :: mu_phi, sigma, mu_h,
t
642 INTEGER ,
INTENT(IN) :: mesh_id
643 REAL(KIND=8),
DIMENSION(6),
OPTIONAL,
INTENT(IN) :: opt_b_ext
653 vv = - exp(
z) * r**3 * cos(
t)
654 ELSE IF (m == 1)
THEN
655 vv = 4 * exp(
z) * r * cos(
t)
659 ELSE IF (
TYPE == 2) then
661 vv = - exp(
z) * r * (-1.d0 + r**2) * cos(
t)
665 ELSE IF (
TYPE == 3) then
667 vv = - exp(
z) * r * (8.d0 + r**2) * cos(
t)
668 ELSE IF (m == 1)
THEN
669 vv = 2 * exp(
z) * r * cos(
t)
673 ELSE IF (
TYPE == 4) then
675 vv = - exp(
z) * r * (8.d0 + r**2) * cos(
t)
679 ELSE IF (
TYPE == 5) then
681 vv = 4 * exp(
z) *r**2 * cos(
t)
682 ELSE IF (m == 1)
THEN
683 vv = exp(
z) * r**2 * cos(
t)
689 vv = 4 * exp(
z) * r**2 * cos(
t)
697 r=mu_phi; r=sigma; r=mu_h; n=mesh_id
698 IF (present(opt_b_ext)) r=opt_b_ext(1)
705 INTEGER,
INTENT(IN) :: type
706 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: rr
707 INTEGER,
INTENT(IN) :: m
708 REAL(KIND=8),
INTENT(IN) :: mu_phi, sigma, mu_h,
t
717 r=rr(1); r=mu_phi; r=sigma; r=mu_h; r=
t; n=type; n=m
722 SUBROUTINE init_maxwell(H_mesh, phi_mesh, time, dt, mu_H_field, mu_phi, &
723 list_mode, hn1, hn, phin1, phin)
726 REAL(KIND=8),
INTENT(OUT):: time
727 REAL(KIND=8),
INTENT(IN) :: dt
728 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: mu_h_field
729 REAL(KIND=8),
INTENT(IN) :: mu_phi
730 INTEGER,
DIMENSION(:),
INTENT(IN) :: list_mode
731 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(OUT):: hn, hn1
732 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(OUT):: phin, phin1
737 DO i=1,
SIZE(list_mode)
738 hn1(:,k,i) =
hexact(h_mesh,k, h_mesh%rr, list_mode(i), mu_h_field, time)
739 IF (inputs%nb_dom_phi>0)
THEN
741 phin1(:,k,i) =
phiexact(k, phi_mesh%rr, list_mode(i) , mu_phi, time)
749 DO i=1,
SIZE(list_mode)
750 hn(:,k,i) =
hexact(h_mesh,k, h_mesh%rr, list_mode(i), mu_h_field, time)
751 IF (inputs%nb_dom_phi>0)
THEN
753 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