40 un_m1, un, pn_m1, pn, phin_m1, phin)
43 REAL(KIND=8),
INTENT(OUT):: time
44 REAL(KIND=8),
INTENT(IN) :: dt
45 INTEGER,
DIMENSION(:),
INTENT(IN) :: list_mode
46 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(OUT):: un_m1, un
47 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(OUT):: pn_m1, pn, phin_m1, phin
49 REAL(KIND=8),
DIMENSION(mesh_c%np) :: pn_m2
52 DO i= 1,
SIZE(list_mode)
56 un_m1(:,j,i) =
vv_exact(j,mesh_f%rr,mode,time-dt)
57 un(:,j,i) =
vv_exact(j,mesh_f%rr,mode,time)
61 pn_m2(:) =
pp_exact(j,mesh_c%rr,mode,time-2*dt)
62 pn_m1(:,j,i) =
pp_exact(j,mesh_c%rr,mode,time-dt)
63 pn(:,j,i) =
pp_exact(j,mesh_c%rr,mode,time)
64 phin_m1(:,j,i) = pn_m1(:,j,i) - pn_m2(:)
65 phin(:,j,i) = pn(:,j,i) - pn_m1(:,j,i)
74 REAL(KIND=8),
INTENT(OUT):: time
75 REAL(KIND=8),
INTENT(IN) :: dt
76 INTEGER,
DIMENSION(:),
INTENT(IN) :: list_mode
77 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(OUT):: tempn_m1, tempn
81 DO i= 1,
SIZE(list_mode)
92 dt, list_mode, level_set_m1, level_set)
95 REAL(KIND=8),
INTENT(OUT):: time
96 REAL(KIND=8),
INTENT(IN) :: dt
97 INTEGER,
DIMENSION(:),
INTENT(IN) :: list_mode
98 REAL(KIND=8),
DIMENSION(:,:,:,:),
INTENT(OUT):: level_set, level_set_m1
99 INTEGER :: mode, i, j, n
102 DO i= 1,
SIZE(list_mode)
106 DO n = 1, inputs%nb_fluid -1
117 INTEGER ,
INTENT(IN) :: type
118 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
119 INTEGER ,
INTENT(IN) :: mode, i
120 REAL(KIND=8),
INTENT(IN) :: time
121 REAL(KIND=8),
INTENT(IN) :: re
122 CHARACTER(LEN=2),
INTENT(IN) :: ty
123 REAL(KIND=8),
DIMENSION(:,:,:),
OPTIONAL,
INTENT(IN) :: opt_density
124 REAL(KIND=8),
DIMENSION(:,:,:),
OPTIONAL,
INTENT(IN) :: opt_tempn
125 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
134 INTEGER ,
INTENT(IN) :: type
135 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
136 INTEGER ,
INTENT(IN) :: m
137 REAL(KIND=8),
INTENT(IN) ::
t
138 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
147 INTEGER ,
INTENT(IN) :: type
148 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
149 INTEGER ,
INTENT(IN) :: m, interface_nb
150 REAL(KIND=8),
INTENT(IN) ::
t
151 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
161 INTEGER ,
INTENT(IN) :: type
162 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
163 INTEGER,
INTENT(IN) :: m
164 REAL(KIND=8),
INTENT(IN) ::
t
165 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
175 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
176 REAL(KIND=8),
INTENT(IN) ::
t
177 REAL(KIND=8),
DIMENSION(SIZE(rr,2),6) :: vv
190 INTEGER ,
INTENT(IN) :: type
191 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
192 INTEGER ,
INTENT(IN) :: m
193 REAL(KIND=8),
INTENT(IN) ::
t
194 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
203 INTEGER ,
INTENT(IN) :: type
204 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
205 INTEGER ,
INTENT(IN) :: m
206 REAL(KIND=8),
INTENT(IN) ::
t
207 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
216 INTEGER ,
INTENT(IN) :: type
217 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
218 INTEGER ,
INTENT(IN) :: m, interface_nb
219 REAL(KIND=8),
INTENT(IN) ::
t
220 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
232 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr_gauss
233 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: angles
234 INTEGER,
INTENT(IN) :: nb_angles
235 INTEGER,
INTENT(IN) :: nb, ne
236 REAL(KIND=8),
INTENT(IN) :: time
237 REAL(KIND=8),
DIMENSION(nb_angles,ne-nb+1) :: vv
252 INTEGER ,
INTENT(IN) :: type, n_start
253 INTEGER,
INTENT(IN) :: mode
254 REAL(KIND=8),
INTENT(IN) ::
t
255 REAL(KIND=8),
DIMENSION(H_Mesh%np) :: vv
266 FUNCTION vexact(m, H_mesh) RESULT(vv) !Set uniquement a l'induction
269 INTEGER,
INTENT(IN) :: m
270 REAL(KIND=8),
DIMENSION(H_mesh%np,6) :: vv
278 CHARACTER(LEN=1),
INTENT(IN) :: char_h_b
279 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
280 INTEGER,
INTENT(IN) :: m
281 REAL(KIND=8),
DIMENSION(SIZE(rr,2),6) :: vv
283 IF (inputs%if_quasi_static_approx)
THEN
286 CALL
error_petsc(
'H_B_quasi_static should not be called')
292 FUNCTION hexact(H_mesh, TYPE, rr, m, mu_H_field, t) RESULT(vv)
295 INTEGER ,
INTENT(IN) :: type
296 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
297 INTEGER ,
INTENT(IN) :: m
298 REAL(KIND=8),
INTENT(IN) ::
t
299 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: mu_h_field
300 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
307 FUNCTION phiexact(TYPE, rr, m, mu_phi,t) RESULT(vv)
309 INTEGER ,
INTENT(IN) :: type
310 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: rr
311 INTEGER ,
INTENT(IN) :: m
312 REAL(KIND=8),
INTENT(IN) :: mu_phi,
t
313 REAL(KIND=8),
DIMENSION(SIZE(rr,2)) :: vv
320 FUNCTION jexact_gauss(TYPE, rr, m, mu_phi, sigma, mu_H, t, mesh_id, opt_B_ext) RESULT(vv)
322 INTEGER ,
INTENT(IN) :: type
323 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: rr
324 INTEGER ,
INTENT(IN) :: m
325 REAL(KIND=8),
INTENT(IN) :: mu_phi, sigma, mu_h,
t
326 INTEGER ,
INTENT(IN) :: mesh_id
327 REAL(KIND=8),
DIMENSION(6),
OPTIONAL,
INTENT(IN) :: opt_b_ext
337 INTEGER,
INTENT(IN) :: type
338 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: rr
339 INTEGER,
INTENT(IN) :: m
340 REAL(KIND=8),
INTENT(IN) :: mu_phi, sigma, mu_h,
t
348 SUBROUTINE init_maxwell(H_mesh, phi_mesh, time, dt, mu_H_field, mu_phi, &
349 list_mode, hn1, hn, phin1, phin)
352 REAL(KIND=8),
INTENT(OUT):: time
353 REAL(KIND=8),
INTENT(IN) :: dt
354 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: mu_h_field
355 REAL(KIND=8),
INTENT(IN) :: mu_phi
356 INTEGER,
DIMENSION(:),
INTENT(IN) :: list_mode
357 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(OUT):: hn, hn1
358 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(OUT):: phin, phin1
363 DO i=1,
SIZE(list_mode)
364 hn1(:,k,i) =
hexact(h_mesh,k, h_mesh%rr, list_mode(i), mu_h_field, time)
365 IF (inputs%nb_dom_phi>0)
THEN
367 phin1(:,k,i) =
phiexact(k, phi_mesh%rr, list_mode(i) , mu_phi, time)
375 DO i=1,
SIZE(list_mode)
376 hn(:,k,i) =
hexact(h_mesh,k, h_mesh%rr, list_mode(i), mu_h_field, time)
377 IF (inputs%nb_dom_phi>0)
THEN
379 phin(:,k,i) =
phiexact(k, phi_mesh%rr, list_mode(i), mu_phi, time)
394 REAL(KIND=8),
DIMENSION(ne-nb+1) :: vv
395 INTEGER,
INTENT(IN) :: nb, ne
396 REAL(KIND=8),
DIMENSION(2,ne-nb+1),
OPTIONAL :: pts
397 INTEGER,
DIMENSION(ne-nb+1),
OPTIONAL :: pts_ids
409 REAL(KIND=8),
DIMENSION(2),
INTENT(in):: pt
410 INTEGER,
DIMENSION(1),
INTENT(in) :: pt_id
411 REAL(KIND=8),
DIMENSION(2) :: vv
421 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: angles
422 INTEGER,
INTENT(IN) :: nb_angles
423 INTEGER,
INTENT(IN) :: nb, ne
424 REAL(KIND=8),
INTENT(IN) :: time
425 REAL(KIND=8),
DIMENSION(nb_angles,ne-nb+1) :: vv
440 REAL(KIND=8),
DIMENSION(SIZE(H_mesh%rr,2)) :: vv
442 vv=0.9d0*minval(inputs%sigma_fluid)
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 source_in_level_set(interface_nb, TYPE, rr, m, t)
real(kind=8) function, dimension(size(h_mesh%rr, 2)), public sigma_bar_in_fourier_space(H_mesh)
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, dimension(size(rr, 2), 6), public h_b_quasi_static(char_h_b, rr, m)
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(h_mesh%np, 6), public vexact(m, H_mesh)
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(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), 6), public imposed_velocity_by_penalty(rr, t)
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, 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)
real(kind=8) function, dimension(ne-nb+1), public mu_bar_in_fourier_space(H_mesh, nb, ne, pts, pts_ids)
subroutine error_petsc(string)
real(kind=8) function, dimension(size(rr, 2)), public level_set_exact(interface_nb, TYPE, rr, m, t)
real(kind=8) function, dimension(size(rr, 2)), public hexact(H_mesh, TYPE, rr, m, mu_H_field, t)
subroutine, public init_level_set(vv_mesh, time, dt, list_mode, level_set_m1, level_set)
subroutine, public init_temperature(mesh, time, dt, list_mode, tempn_m1, tempn)