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
130 CHARACTER(LEN=2) :: np
132 IF (present(opt_density)) CALL
error_petsc(
'density should not be present for test 15')
135 vv = inputs%gravity_coefficient*opt_tempn(:,1,i)
136 ELSE IF (type==6)
THEN
137 vv = inputs%gravity_coefficient*opt_tempn(:,2,i)
144 n=
SIZE(rr,1); n=mode; r=time; r=re; np=ty
151 INTEGER ,
INTENT(IN) :: type
152 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
153 INTEGER ,
INTENT(IN) :: m
154 REAL(KIND=8),
INTENT(IN) ::
t
155 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
163 n=type; n=
SIZE(rr,1); n=m; r=
t
184 INTEGER ,
INTENT(IN) :: type
185 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
186 INTEGER,
INTENT(IN) :: m
187 REAL(KIND=8),
INTENT(IN) ::
t
188 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
196 n=type; n=
SIZE(rr,1); n=m; r=
t
219 INTEGER ,
INTENT(IN) :: type
220 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
221 INTEGER ,
INTENT(IN) :: m
222 REAL(KIND=8),
INTENT(IN) ::
t
223 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
231 n=type; n=
SIZE(rr,1); n=m; r=
t
238 INTEGER ,
INTENT(IN) :: type
239 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
240 INTEGER ,
INTENT(IN) :: m
241 REAL(KIND=8),
INTENT(IN) ::
t
242 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
243 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: r,
z
249 IF (m==0 .AND. type==1)
THEN
250 vv(:)= -
z - (
z-5d-1)*(
z+5d-1)
251 ELSE IF (m.GE.1)
THEN
252 vv= -(
z-5d-1)*(
z+5d-1)
303 INTEGER ,
INTENT(IN) :: type, n_start
304 INTEGER,
INTENT(IN) :: mode
305 REAL(KIND=8),
INTENT(IN) ::
t
306 REAL(KIND=8),
DIMENSION(H_Mesh%np) :: vv
314 n=h_mesh%np; r=
t; n=type; n=mode; n=n_start
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)
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 source_in_temperature(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 error_petsc(string)
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