35 REAL(KIND=8),
PRIVATE,
PARAMETER :: pi = 3.14159265358979323846d0
36 REAL(KIND=8),
PRIVATE ,
PARAMETER :: twopi=2*pi
37 REAL(KIND=8),
PARAMETER:: mu_disk= 5.0d1
44 REAL(KIND=8),
PARAMETER:: top_propeller_angle_offset = 0.d0
45 INTEGER :: nblades = 8
46 REAL(KIND=8),
PARAMETER:: lw = 0.0125
47 REAL(KIND=8),
PARAMETER:: disk_bot=-1.1d0, top_of_disk_bot=-0.9d0, top_of_blade_bot=-0.7d0
48 REAL(KIND=8),
PARAMETER:: disk_top= 1.1d0, bot_of_disk_top= 0.9d0, bot_of_blade_top= 0.7d0
49 REAL(KIND=8),
PARAMETER,
PUBLIC:: disk_radius=0.75d0, hole_radius=0.1d0
51 REAL(KIND=8),
PARAMETER:: two_rp = disk_radius/SIN(twopi*24.d0/360.d0)
53 REAL(KIND=8),
PUBLIC :: omega_Vol= pi*(1.0)*(2.0)
56 REAL(KIND=8),
PARAMETER:: wjump_hole = 0.06*(1.0), wjump= 0.04*(1.0)
57 REAL(KIND=8),
PARAMETER:: hole_r = hole_radius, hole_rp=hole_r - wjump_hole
58 REAL(KIND=8),
PUBLIC,
PARAMETER:: disk_r = disk_radius, disk_rp= disk_r- wjump
61 REAL(KIND=8),
PARAMETER:: cyl_bott = -1.0
62 REAL(KIND=8),
PARAMETER:: Bdisk_z = cyl_bott + 0.3d0, bdisk_z_p= Bdisk_z - wjump
63 REAL(KIND=8),
PARAMETER:: zbot = cyl_bott + 0.1d0, zbot_p = zbot - wjump
64 REAL(KIND=8),
PARAMETER:: zbot_bar = zbot - 0.04d0, zbot_bar_p = zbot_bar - wjump
67 REAL(KIND=8),
PARAMETER:: cyl_top = 1.0
68 REAL(KIND=8),
PARAMETER:: Tdisk_z = cyl_top - 0.3d0, Tdisk_z_p= Tdisk_z + wjump
69 REAL(KIND=8),
PARAMETER:: ztop = cyl_top - 0.1d0, ztop_p = ztop + wjump
70 REAL(KIND=8),
PARAMETER:: ztop_bar = ztop + 0.04d0, ztop_bar_p = ztop_bar + wjump
73 REAL(KIND=8),
PARAMETER:: alpha=200.d0*(1.0), alpha_th = 80.d0*(1.0)
76 LOGICAL,
PARAMETER:: if_bottom_prop=.TRUE.
77 LOGICAL,
PARAMETER:: if_top_prop=.TRUE.
78 REAL(KIND=8),
PARAMETER:: solid_vel=1.0;
87 un_m1, un, pn_m1, pn, phin_m1, phin)
90 REAL(KIND=8),
INTENT(OUT):: time
91 REAL(KIND=8),
INTENT(IN) :: dt
92 INTEGER,
DIMENSION(:),
INTENT(IN) :: list_mode
93 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(OUT):: un_m1, un
94 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(OUT):: pn_m1, pn, phin_m1, phin
96 REAL(KIND=8),
DIMENSION(mesh_c%np) :: pn_m2
99 DO i= 1,
SIZE(list_mode)
103 un_m1(:,j,i) =
vv_exact(j,mesh_f%rr,mode,time-dt)
104 un(:,j,i) =
vv_exact(j,mesh_f%rr,mode,time)
108 pn_m2(:) =
pp_exact(j,mesh_c%rr,mode,time-2*dt)
109 pn_m1(:,j,i) =
pp_exact(j,mesh_c%rr,mode,time-dt)
110 pn(:,j,i) =
pp_exact(j,mesh_c%rr,mode,time)
111 phin_m1(:,j,i) = pn_m1(:,j,i) - pn_m2(:)
112 phin(:,j,i) = pn(:,j,i) - pn_m1(:,j,i)
165 INTEGER ,
INTENT(IN) :: type
166 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
167 INTEGER ,
INTENT(IN) :: mode, i
168 REAL(KIND=8),
INTENT(IN) :: time
169 REAL(KIND=8),
INTENT(IN) :: re
170 CHARACTER(LEN=2),
INTENT(IN) :: ty
171 REAL(KIND=8),
DIMENSION(:,:,:),
OPTIONAL,
INTENT(IN) :: opt_density
172 REAL(KIND=8),
DIMENSION(:,:,:),
OPTIONAL,
INTENT(IN) :: opt_tempn
173 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
176 CHARACTER(LEN=2) :: np
178 IF (present(opt_density)) CALL
error_petsc(
'density should not be present for test 29')
179 IF (present(opt_tempn)) CALL
error_petsc(
'temperature should not be present for test 29')
185 n=type; n=
SIZE(rr,1); n=mode; n=i; r=time; r=re; np=ty
220 INTEGER ,
INTENT(IN) :: type
221 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
222 INTEGER,
INTENT(IN) :: m
223 REAL(KIND=8),
INTENT(IN) ::
t
224 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
230 IF (type==3 .AND. m==0)
THEN
235 IF ( if_bottom_prop .AND. r <disk_radius .AND.
z < top_of_blade_bot )
then
240 IF ( if_top_prop .AND. r <disk_radius .AND.
z > bot_of_blade_top)
then
256 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
257 REAL(KIND=8),
INTENT(IN) ::
t
258 REAL(KIND=8),
DIMENSION(SIZE(rr,2),6) :: vv
267 vv(n,3) = solid_vel*rr(1,n)
269 vv(n,3) = -solid_vel*rr(1,n)
286 INTEGER ,
INTENT(IN) :: type
287 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
288 INTEGER ,
INTENT(IN) :: m
289 REAL(KIND=8),
INTENT(IN) ::
t
290 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
298 n=type; n=
SIZE(rr,1); n=m; r=
t
337 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr_gauss
338 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: angles
339 INTEGER,
INTENT(IN) :: nb_angles
340 INTEGER,
INTENT(IN) :: nb, ne
341 REAL(KIND=8),
INTENT(IN) :: time
342 REAL(KIND=8),
DIMENSION(nb_angles,ne-nb+1) :: vv
360 INTEGER ,
INTENT(IN) :: type, n_start
361 INTEGER,
INTENT(IN) :: mode
362 REAL(KIND=8),
INTENT(IN) ::
t
363 REAL(KIND=8),
DIMENSION(H_Mesh%np) :: vv
371 n=h_mesh%np; r=
t; n=type; n=mode; n=n_start
403 FUNCTION hexact(H_mesh,TYPE, rr, m, mu_H_field, t) RESULT(vv)
406 INTEGER ,
INTENT(IN) :: type
407 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
408 INTEGER ,
INTENT(IN) :: m
409 REAL(KIND=8),
INTENT(IN) ::
t
410 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: mu_h_field
411 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
419 n=h_mesh%np; n=type; n=
SIZE(rr,1); n=m; r=mu_h_field(1); r=
t
424 FUNCTION phiexact(TYPE, rr, m, mu_phi,t) RESULT(vv)
426 INTEGER ,
INTENT(IN) :: type
427 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
428 INTEGER ,
INTENT(IN) :: m
429 REAL(KIND=8),
INTENT(IN) :: mu_phi,
t
430 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
438 n=type; n=
SIZE(rr,1); n=m; r=mu_phi; r=
t
443 FUNCTION jexact_gauss(TYPE, rr, m, mu_phi, sigma, mu_H, t, mesh_id, opt_B_ext) RESULT(vv)
445 INTEGER ,
INTENT(IN) :: type
446 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: rr
447 INTEGER ,
INTENT(IN) :: m
448 REAL(KIND=8),
INTENT(IN) :: mu_phi, sigma, mu_h,
t
449 INTEGER ,
INTENT(IN) :: mesh_id
450 REAL(KIND=8),
DIMENSION(6),
OPTIONAL,
INTENT(IN) :: opt_b_ext
459 n=
SIZE(rr,1); r=mu_phi; r=sigma; r=mu_h; r=
t; n=type; n=m; n=mesh_id
460 IF (present(opt_b_ext)) r=opt_b_ext(1)
467 INTEGER,
INTENT(IN) :: type
468 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: rr
469 INTEGER,
INTENT(IN) :: m
470 REAL(KIND=8),
INTENT(IN) :: mu_phi, sigma, mu_h,
t
476 CALL
error_petsc(
'Eexact: should not be called for this test')
479 n=
SIZE(rr,1); r=mu_phi; r=sigma; r=mu_h; r=
t; n=type; n=m
485 INTEGER ,
INTENT(IN) :: type
486 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
487 INTEGER ,
INTENT(IN) :: m
488 REAL(KIND=8),
INTENT(IN) ::
t
489 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: mu_h_field
490 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
505 ELSEIF (
TYPE == 4) then
512 n=
SIZE(rr,1); r=mu_h_field(1); r=
t
517 SUBROUTINE init_maxwell(H_mesh, phi_mesh, time, dt, mu_H_field, mu_phi, &
518 list_mode, hn1, hn, phin1, phin)
521 REAL(KIND=8),
INTENT(OUT):: time
522 REAL(KIND=8),
INTENT(IN) :: dt
523 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: mu_h_field
524 REAL(KIND=8),
INTENT(IN) :: mu_phi
525 INTEGER,
DIMENSION(:),
INTENT(IN) :: list_mode
526 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(OUT):: hn, hn1
527 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(OUT):: phin, phin1
528 INTEGER :: i, k, mode, m_max_c
535 m_max_c =
SIZE(list_mode)
541 hn1(:,k,i) =
hexact_init(k, h_mesh%rr, mode, mu_h_field, time)
543 phin1(:,k,i) =
phiexact(k, phi_mesh%rr, mode, mu_phi, time)
551 hn(:,k,i) =
hexact_init(k, h_mesh%rr, mode, mu_h_field, time)
553 phin(:,k,i) =
phiexact(k, phi_mesh%rr, mode, mu_phi, time)
567 REAL(KIND=8),
DIMENSION(ne-nb+1) :: vv
568 INTEGER,
INTENT(IN) :: nb, ne
569 REAL(KIND=8),
DIMENSION(2,ne-nb+1),
OPTIONAL :: pts
570 INTEGER,
DIMENSION(ne-nb+1),
OPTIONAL :: pts_ids
572 REAL(KIND=8),
DIMENSION(ne-nb+1) :: r,
z
574 IF( present(pts) .AND. present(pts_ids) )
THEN
582 DO n = 1, ne - nb + 1
594 REAL(KIND=8),
DIMENSION(2),
INTENT(IN):: pt
595 INTEGER,
DIMENSION(1),
INTENT(IN) :: pt_id
596 REAL(KIND=8),
DIMENSION(2) :: vv
611 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: angles
612 INTEGER,
INTENT(IN) :: nb_angles
613 INTEGER,
INTENT(IN) :: nb, ne
614 REAL(KIND=8),
INTENT(IN) :: time
615 REAL(KIND=8),
DIMENSION(nb_angles,ne-nb+1) :: vv
617 vv = (1.d0 -
penal_in_real_space(h_mesh,h_mesh%rr(:,nb:ne),angles,nb_angles,nb,ne,time))*(mu_disk - 1.d0 ) +1.d0
626 REAL(KIND=8) :: r,
z,vv
631 IF ( if_bottom_prop .AND. if_top_prop)
THEN
633 ELSE IF (if_bottom_prop)
THEN
646 REAL(KIND=8) :: r,
z,vv
647 REAL(KIND=8) :: r2,r3,z0,z1
659 IF (
z .GE. z1 .AND. r .GE. r3 )
THEN
661 ELSE IF (r.LE.r2)
THEN
664 ELSE IF (
z.GE.z1)
THEN
669 ELSE IF (r.GE.r2 .AND. r.LE.r3)
THEN
672 ELSE IF(
z.LE.z0)
THEN
688 REAL(KIND=8) :: r,
z,vv,psi
689 REAL(KIND=8) :: r2,r3,z2,z3
700 IF (
z .LE. z3 .AND. r .GE. r3)
THEN
702 ELSE IF(r.LE.r2)
THEN
705 ELSE IF (
z.LE.z3)
THEN
710 ELSE IF (r.GE.r2 .AND. r.LE.r3)
THEN
713 ELSE IF(
z.GE.z2)
THEN
730 REAL(KIND=8),
DIMENSION(2) :: vv
735 IF ( if_bottom_prop .AND. if_top_prop)
THEN
737 ELSE IF (if_bottom_prop)
THEN
751 REAL(KIND=8),
DIMENSION(2) :: vv
752 REAL(KIND=8) :: r2,r3,z0,z1
753 REAL(KIND=8) :: dfr,dfz
766 IF (
z .GE. z1 .AND. r .GE. r3 )
THEN
769 ELSE IF (r.LE.r2)
THEN
773 ELSE IF (
z.GE.z1)
THEN
780 ELSE IF (r.GE.r2 .AND. r.LE.r3)
THEN
784 ELSE IF(
z.LE.z0)
THEN
804 REAL(KIND=8),
DIMENSION(2) :: vv
805 REAL(KIND=8) :: r2,r3,z2,z3
806 REAL(KIND=8) :: dfr,dfz
818 IF (
z .LE. z3 .AND. r .GE. r3)
THEN
821 ELSE IF(r.LE.r2)
THEN
825 ELSE IF (
z.LE.z3)
THEN
832 ELSE IF (r.GE.r2 .AND. r.LE.r3)
THEN
836 ELSE IF(
z.GE.z2)
THEN
859 REAL(KIND=8),
DIMENSION(:,:) :: rr_gauss
860 REAL(KIND=8),
DIMENSION(:) :: angles
863 REAL(KIND=8),
DIMENSION(nb_angles,ne-nb+1) :: vv
865 REAL(KIND=8) :: r,
z,time
870 r = rr_gauss(1,n_loc)
871 z = rr_gauss(2,n_loc)
874 IF (if_bottom_prop .AND. if_top_prop)
THEN
877 ELSE IF (if_bottom_prop)
THEN
898 REAL(KIND=8) :: r,
theta,
z,time
899 REAL(KIND=8),
DIMENSION(:) :: angles
901 REAL(KIND=8),
DIMENSION(nb_angles) :: vv
903 REAL(KIND=8) :: g, a,alphaz,alphar
904 REAL(KIND=8) :: r0,r1,r2,r3,z0,z1,z2,z3
905 REAL(KIND=8) :: psi, tanhp,tanhm, tanhd, r_theta
911 IF(abs(psi) .LE. 1.d-8)
THEN
930 IF (
z .LE. z1 )
THEN
932 ELSE IF(
z .LE. z0 .AND.
z .GE. z1)
THEN
934 ELSE IF(
z .GE. z0)
THEN
938 If ( r .LE. r0 )
THEN
940 ELSE IF(r .GE. r0 .AND. r .LE. r1)
THEN
945 alphaz= alpha_th*alphaz*alphar
947 r_theta = asin(r/two_rp)
954 theta= angles(na) + solid_vel*time
961 a =
theta - r_theta - floor((
theta - r_theta)/(twopi/nblades))*twopi/nblades &
964 tanhp = tanh(alphaz*(r*a+lw+lw*r))
965 tanhm = tanh(alphaz*(r*a-lw-lw*r))
966 tanhd = tanh(alphaz*(lw+lw*r))
967 g=(1+tanhp)*(1-tanhm)/(1+tanhd)**2
982 REAL(KIND=8) :: r,
theta,
z,time
983 REAL(KIND=8),
DIMENSION(:) :: angles
985 REAL(KIND=8),
DIMENSION(nb_angles) :: vv
987 REAL(KIND=8) :: g, a,alphaz,alphar
988 REAL(KIND=8) :: r0,r1,r2,r3,z0,z1,z2,z3
989 REAL(KIND=8) :: psi, tanhp,tanhm, tanhd, r_theta
996 IF(abs(psi) .LE. 1.d-8)
THEN
1016 IF (
z .LE. z0 )
THEN
1018 ELSE IF(
z .GE. z0 .AND.
z .LE. z1)
THEN
1020 ELSE IF(
z .GE. z1)
THEN
1024 IF ( r .LE. r0 )
THEN
1026 ELSE IF(r .GE. r0 .AND. r .LE. r1)
THEN
1031 alphaz= alpha_th*alphaz*alphar
1033 r_theta = asin(r/two_rp)
1035 DO na = 1, nb_angles
1038 theta= angles(na) - solid_vel*time
1043 a =
theta + r_theta - floor((
theta + r_theta)/(twopi/nblades))*twopi/nblades &
1046 tanhp = tanh(alphaz*(r*a+lw+lw*r))
1047 tanhm = tanh(alphaz*(r*a-lw-lw*r))
1048 tanhd = tanh(alphaz*(lw+lw*r))
1049 g=(1+tanhp)*(1-tanhm)/(1+tanhd)**2
1064 REAL(KIND=8) :: r0,r1,r2,r3,z0,z1,z2,z3
1065 REAL(KIND=8) :: curve_1,curve_2,psi
1081 IF (
z .LE. z3 .AND. r .GE. r3)
THEN
1083 ELSE IF (r.LE.r0)
THEN
1086 ELSE IF (
z.LE.z1)
THEN
1091 ELSE IF(r.GE.r0 .AND. r.LE.r1)
THEN
1094 IF(
z.LE.curve_2)
THEN
1096 ELSE IF(
z.GE.curve_1)
THEN
1101 ELSE IF(r.GE.r1 .AND. r.LE.r2)
THEN
1104 ELSE IF (
z.LE.z3)
THEN
1109 ELSE IF (r.GE.r2 .AND. r.LE.r3)
THEN
1112 ELSE IF(
z.GE.z2)
THEN
1132 REAL(KIND=8) :: r0,r1,r2,r3,z0,z1,z2,z3
1133 REAL(KIND=8) :: curve_1,curve_2,psi
1150 IF (
z .GE. z3 .AND. r .GE. r3)
THEN
1152 ELSE IF (r.LE.r0)
THEN
1155 ELSE IF (
z.GE.z1)
THEN
1160 ELSE IF(r.GE.r0 .AND. r.LE.r1)
THEN
1163 IF(
z.GE.curve_2)
THEN
1165 ELSE IF(
z.LE.curve_1)
THEN
1170 ELSE IF(r.GE.r1 .AND. r.LE.r2)
THEN
1173 ELSE IF (
z.GE.z3)
THEN
1178 ELSE IF (r.GE.r2 .AND. r.LE.r3)
THEN
1181 ELSE IF(
z.LE.z2)
THEN
1195 REAL(KIND=8) :: x,x0,x1
1197 REAL(KIND=8) :: a0,a1,a2,a3
1200 a0 = x1**2*(3*x0-x1)/(x0-x1)**3;
1201 a1 = -6.0*x0*x1/(x0-x1)**3;
1202 a2 = (3.0*(x0+x1))/(x0-x1)**3;
1203 a3 = -2.0/(x0-x1)**3;
1204 vv = a0+a1*x+a2*x*x + a3*x*x*x
1211 REAL(KIND=8) :: x,x0,x1
1221 REAL(KIND=8) :: x,x0,x1
1223 REAL(KIND=8) :: a0,a1,a2,a3
1226 a0 = x1**2*(3*x0-x1)/(x0-x1)**3;
1227 a1 = -6.0*x0*x1/(x0-x1)**3;
1228 a2 = (3.0*(x0+x1))/(x0-x1)**3;
1229 a3 = -2.0/(x0-x1)**3;
1231 vv = a1+2.d0*a2*x + 3.d0*a3*x*x
1238 REAL(KIND=8) :: x,x0,x1
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 dsmooth_jump_down(x, x0, x1)
real(kind=8) function dsmooth_jump_up(x, x0, x1)
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 smooth_bottom_supporting_disk(r, z)
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)
real(kind=8) function smooth_jump_down(x, x0, x1)
real(kind=8) function, dimension(2) grad_top_mu_bar_func(r, z)
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 theta
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, dimension(nb_angles, ne-nb+1) smooth_penal_in_real_space(mesh, rr_gauss, angles, nb_angles, nb, ne, time)
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 bottom_mu_bar_func(r, z)
real(kind=8) function, dimension(size(rr, 2)) hexact_init(TYPE, rr, m, mu_H_field, t)
real(kind=8) function, dimension(nb_angles) smooth_top_propeller(r, z, angles, nb_angles, time)
real(kind=8) function, dimension(nb_angles, ne-nb+1), public penal_in_real_space(mesh, rr_gauss, angles, nb_angles, nb, ne, time)
real(kind=8) function, dimension(nb_angles) smooth_bottom_propeller(r, z, angles, nb_angles, time)
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), 6), public imposed_velocity_by_penalty(rr, t)
real(kind=8) function, dimension(2) grad_mu_bar_func(r, z)
real(kind=8) function, dimension(2), public grad_mu_bar_in_fourier_space(pt, pt_id)
real(kind=8) function, dimension(nb_angles, ne-nb+1), public mu_in_real_space(H_mesh, angles, nb_angles, nb, ne, time)
real(kind=8) function top_mu_bar_func(r, z)
real(kind=8) function, public eexact_gauss(TYPE, rr, m, mu_phi, sigma, mu_H, t)
real(kind=8) function, dimension(2) grad_bottom_mu_bar_func(r, z)
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(ne-nb+1), public mu_bar_in_fourier_space(H_mesh, nb, ne, pts, pts_ids)
real(kind=8) function mu_bar_func(r, z)
subroutine error_petsc(string)
real(kind=8) function smooth_jump_up(x, x0, x1)
real(kind=8) function smooth_top_supporting_disk(r, z)
real(kind=8) function, dimension(size(rr, 2)), public hexact(H_mesh, TYPE, rr, m, mu_H_field, t)
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