SFEMaNS  version 4.1 (work in progress)
Reference documentation for SFEMaNS
 All Classes Files Functions Variables Groups Pages
condlim_test_7.f90
Go to the documentation of this file.
2  USE my_util
3  USE def_type_mesh
4  USE input_data
5 !!$ATTENTION
6 !!$Some subroutines have been commented to avoid warning messages when compiling executable.
7 !!$It can not be done in the module boundary_generic that expects all subroutines to be present.
8 !!$END ATTENTION
9 !!$ PUBLIC :: init_level_set
10 !!$ PUBLIC :: init_velocity_pressure
11 !!$ PUBLIC :: init_temperature
12 !!$ PUBLIC :: source_in_NS_momentum
13 !!$ PUBLIC :: source_in_temperature
14 !!$ PUBLIC :: source_in_level_set
15 !!$ PUBLIC :: vv_exact
16 !!$ PUBLIC :: imposed_velocity_by_penalty
17 !!$ PUBLIC :: pp_exact
18 !!$ PUBLIC :: temperature_exact
19 !!$ PUBLIC :: level_set_exact
20 !!$ PUBLIC :: penal_in_real_space
21 !!$ PUBLIC :: extension_velocity
22  PUBLIC :: vexact
23 !!$ PUBLIC :: H_B_quasi_static
24  PUBLIC :: hexact
25  PUBLIC :: phiexact
26  PUBLIC :: jexact_gauss
27  PUBLIC :: eexact_gauss
28  PUBLIC :: init_maxwell
29 !!$ PUBLIC :: mu_bar_in_fourier_space
30 !!$ PUBLIC :: grad_mu_bar_in_fourier_space
31 !!$ PUBLIC :: mu_in_real_space
32  PRIVATE
33 
34 CONTAINS
35  !===============================================================================
36  ! Boundary conditions for Navier-Stokes
37  !===============================================================================
38 
39 !!$ !===Initialize velocity, pressure
40 !!$ SUBROUTINE init_velocity_pressure(mesh_f, mesh_c, time, dt, list_mode, &
41 !!$ un_m1, un, pn_m1, pn, phin_m1, phin)
42 !!$ IMPLICIT NONE
43 !!$ TYPE(mesh_type) :: mesh_f, mesh_c
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
49 !!$ INTEGER :: mode, i, j
50 !!$ REAL(KIND=8), DIMENSION(mesh_c%np) :: pn_m2
51 !!$
52 !!$ time = 0.d0
53 !!$ DO i= 1, SIZE(list_mode)
54 !!$ mode = list_mode(i)
55 !!$ DO j = 1, 6
56 !!$ !===velocity
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)
59 !!$ END DO
60 !!$ DO j = 1, 2
61 !!$ !===pressure
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)
67 !!$ ENDDO
68 !!$ ENDDO
69 !!$ END SUBROUTINE init_velocity_pressure
70 
71 !!$ !===Initialize temperature
72 !!$ SUBROUTINE init_temperature(mesh, time, dt, list_mode, tempn_m1, tempn)
73 !!$ IMPLICIT NONE
74 !!$ TYPE(mesh_type) :: mesh
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
79 !!$ INTEGER :: mode, i, j
80 !!$
81 !!$ time = 0.d0
82 !!$ DO i= 1, SIZE(list_mode)
83 !!$ mode = list_mode(i)
84 !!$ DO j = 1, 2
85 !!$ tempn_m1(:,j,i) = temperature_exact(j, mesh%rr, mode, time-dt)
86 !!$ tempn (:,j,i) = temperature_exact(j, mesh%rr, mode, time)
87 !!$ ENDDO
88 !!$ ENDDO
89 !!$ END SUBROUTINE init_temperature
90 
91 !!$ !===Initialize level_set
92 !!$ SUBROUTINE init_level_set(vv_mesh, time, &
93 !!$ dt, list_mode, level_set_m1, level_set)
94 !!$ IMPLICIT NONE
95 !!$ TYPE(mesh_type) :: vv_mesh
96 !!$ REAL(KIND=8), INTENT(OUT):: time
97 !!$ REAL(KIND=8), INTENT(IN) :: dt
98 !!$ INTEGER, DIMENSION(:), INTENT(IN) :: list_mode
99 !!$ REAL(KIND=8), DIMENSION(:,:,:,:), INTENT(OUT):: level_set, level_set_m1
100 !!$ INTEGER :: mode, i, j, n
101 !!$
102 !!$ time = 0.d0
103 !!$ DO i= 1, SIZE(list_mode)
104 !!$ mode = list_mode(i)
105 !!$ DO j = 1, 2
106 !!$ !===level_set
107 !!$ DO n = 1, inputs%nb_fluid -1
108 !!$ level_set_m1(n,:,j,i) = level_set_exact(n,j,vv_mesh%rr,mode,time-dt)
109 !!$ level_set (n,:,j,i) = level_set_exact(n,j,vv_mesh%rr,mode,time)
110 !!$ END DO
111 !!$ END DO
112 !!$ END DO
113 !!$
114 !!$ END SUBROUTINE init_level_set
115 
116 !!$ !===Source in momemtum equation. Always called.
117 !!$ FUNCTION source_in_NS_momentum(TYPE, rr, mode, i, time, Re, ty, opt_density, opt_tempn) RESULT(vv)
118 !!$ IMPLICIT NONE
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
128 !!$
129 !!$ vv = 0.d0
130 !!$ CALL error_petsc('source_in_NS_momentum: should not be called for this test')
131 !!$ RETURN
132 !!$ END FUNCTION source_in_NS_momentum
133 
134 !!$ !===Extra source in level set equation. Always called.
135 !!$ !===Extra source in temperature equation. Always called.
136 !!$ FUNCTION source_in_temperature(TYPE, rr, m, t)RESULT(vv)
137 !!$ IMPLICIT NONE
138 !!$ INTEGER , INTENT(IN) :: TYPE
139 !!$ REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
140 !!$ INTEGER , INTENT(IN) :: m
141 !!$ REAL(KIND=8), INTENT(IN) :: t
142 !!$ REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
143 !!$
144 !!$ vv = 0.d0
145 !!$ CALL error_petsc('source_in_temperature: should not be called for this test')
146 !!$ RETURN
147 !!$ END FUNCTION source_in_temperature
148 
149 !!$ FUNCTION source_in_level_set(interface_nb,TYPE, rr, m, t)RESULT(vv)
150 !!$ IMPLICIT NONE
151 !!$ INTEGER , INTENT(IN) :: TYPE
152 !!$ REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
153 !!$ INTEGER , INTENT(IN) :: m, interface_nb
154 !!$ REAL(KIND=8), INTENT(IN) :: t
155 !!$ REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
156 !!$
157 !!$ vv=0.d0
158 !!$ CALL error_petsc('sourece_in_temperature: should not be called for this test')
159 !!$ END FUNCTION source_in_level_set
160 
161 !!$ !===Velocity for boundary conditions in Navier-Stokes.
162 !!$ !===Can be used also to initialize velocity in: init_velocity_pressure_temperature
163 !!$ FUNCTION vv_exact(TYPE,rr,m,t) RESULT(vv)
164 !!$ IMPLICIT NONE
165 !!$ INTEGER , INTENT(IN) :: TYPE
166 !!$ REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
167 !!$ INTEGER, INTENT(IN) :: m
168 !!$ REAL(KIND=8), INTENT(IN) :: t
169 !!$ REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
170 !!$
171 !!$ vv(:) = 0.d0
172 !!$ CALL error_petsc('vv_exact: should not be called for this test')
173 !!$ RETURN
174 !!$ END FUNCTION vv_exact
175 
176 !!$ !===Solid velocity imposed when using penalty technique
177 !!$ !===Defined in Fourier space on mode 0 only.
178 !!$ FUNCTION imposed_velocity_by_penalty(rr,t) RESULT(vv)
179 !!$ IMPLICIT NONE
180 !!$ REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
181 !!$ REAL(KIND=8), INTENT(IN) :: t
182 !!$ REAL(KIND=8), DIMENSION(SIZE(rr,2),6) :: vv
183 !!$
184 !!$ vv=0.d0
185 !!$ RETURN
186 !!$ END FUNCTION imposed_velocity_by_penalty
187 
188 !!$ !===Pressure for boundary conditions in Navier-Stokes.
189 !!$ !===Can be used also to initialize pressure in the subroutine init_velocity_pressure.
190 !!$ !===Use this routine for outflow BCs only.
191 !!$ !===CAUTION: Do not enfore BCs on pressure where normal component
192 !!$ ! of velocity is prescribed.
193 !!$ FUNCTION pp_exact(TYPE,rr,m,t) RESULT (vv)
194 !!$ IMPLICIT NONE
195 !!$ INTEGER , INTENT(IN) :: TYPE
196 !!$ REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
197 !!$ INTEGER , INTENT(IN) :: m
198 !!$ REAL(KIND=8), INTENT(IN) :: t
199 !!$ REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
200 !!$
201 !!$ vv=0.d0
202 !!$ CALL error_petsc('pp_exact: should not be called for this test')
203 !!$ RETURN
204 !!$ END FUNCTION pp_exact
205 
206 !!$ !===Temperature for boundary conditions in temperature equation.
207 !!$ FUNCTION temperature_exact(TYPE,rr,m,t) RESULT (vv)
208 !!$ IMPLICIT NONE
209 !!$ INTEGER , INTENT(IN) :: TYPE
210 !!$ REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
211 !!$ INTEGER , INTENT(IN) :: m
212 !!$ REAL(KIND=8), INTENT(IN) :: t
213 !!$ REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
214 !!$
215 !!$ vv = 0.d0
216 !!$ CALL error_petsc('temperature_exact: should not be called for this test')
217 !!$ RETURN
218 !!$ END FUNCTION temperature_exact
219 
220 !!$ !===Can be used to initialize level set in the subroutine init_level_set.
221 !!$ FUNCTION level_set_exact(interface_nb,TYPE,rr,m,t) RESULT (vv)
222 !!$ IMPLICIT NONE
223 !!$ INTEGER , INTENT(IN) :: TYPE
224 !!$ REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
225 !!$ INTEGER , INTENT(IN) :: m, interface_nb
226 !!$ REAL(KIND=8), INTENT(IN) :: t
227 !!$ REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
228 !!$
229 !!$ vv = 0.d0
230 !!$ CALL error_petsc('level_set_exact: should not be called for this test')
231 !!$ RETURN
232 !!$
233 !!$ END FUNCTION level_set_exact
234 
235 !!$ !===Penalty coefficient (if needed)
236 !!$ !===This coefficient is equal to zero in subdomain
237 !!$ !===where penalty is applied (penalty is zero in solid)
238 !!$ FUNCTION penal_in_real_space(mesh,rr_gauss,angles,nb_angles,nb,ne,time) RESULT(vv)
239 !!$ IMPLICIT NONE
240 !!$ TYPE(mesh_type) :: mesh
241 !!$ REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr_gauss
242 !!$ REAL(KIND=8), DIMENSION(:), INTENT(IN) :: angles
243 !!$ INTEGER, INTENT(IN) :: nb_angles
244 !!$ INTEGER, INTENT(IN) :: nb, ne
245 !!$ REAL(KIND=8), INTENT(IN) :: time
246 !!$ REAL(KIND=8), DIMENSION(nb_angles,ne-nb+1) :: vv
247 !!$
248 !!$ vv = 1.d0
249 !!$ CALL error_petsc('penal_in_real_space: should not be called for this test')
250 !!$ RETURN
251 !!$ END FUNCTION penal_in_real_space
252 
253 !!$ !===Extension of the velocity field in the solid.
254 !!$ !===Used when temperature or Maxwell equations are solved.
255 !!$ !===It extends the velocity field on the Navier-Stokes domain to a
256 !!$ !===velocity field on the temperature and the Maxwell domain.
257 !!$ !===It is also used if problem type=mxw and restart velocity
258 !!$ !===is set to true in data (type problem denoted mxx in the code).
259 !!$ FUNCTION extension_velocity(TYPE, H_mesh, mode, t, n_start) RESULT(vv)
260 !!$ IMPLICIT NONE
261 !!$ TYPE(mesh_type), INTENT(IN) :: H_mesh
262 !!$ INTEGER , INTENT(IN) :: TYPE, n_start
263 !!$ INTEGER, INTENT(IN) :: mode
264 !!$ REAL(KIND=8), INTENT(IN) :: t
265 !!$ REAL(KIND=8), DIMENSION(H_Mesh%np) :: vv
266 !!$
267 !!$ vv = 0.d0
268 !!$ RETURN
269 !!$
270 !!$ END FUNCTION extension_velocity
271 
272  !===============================================================================
273  ! Boundary conditions for Maxwell
274  !===============================================================================
275  !===Velocity used in the induction equation.
276  !===Used only if problem type is mxw and restart velocity is false
277  FUNCTION vexact(m, H_mesh) RESULT(vv) !Set uniquement a l'induction
278  IMPLICIT NONE
279  TYPE(mesh_type), INTENT(IN) :: h_mesh
280  INTEGER, INTENT(IN) :: m
281  REAL(KIND=8), DIMENSION(H_mesh%np,6) :: vv
282  INTEGER :: n
283 
284  vv = 0.d0
285  RETURN
286 
287  !===Dummies variables to avoid warning
288  n=m
289  !===Dummies variables to avoid warning
290  END FUNCTION vexact
291 
292 !!$ !===Magnetic field and magnetic induction for quasi-static approximation
293 !!$ !===if needed
294 !!$ FUNCTION H_B_quasi_static(char_h_b, rr, m) RESULT(vv)
295 !!$ IMPLICIT NONE
296 !!$ CHARACTER(LEN=1), INTENT(IN) :: char_h_b
297 !!$ REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
298 !!$ INTEGER, INTENT(IN) :: m
299 !!$ REAL(KIND=8), DIMENSION(SIZE(rr,2),6) :: vv
300 !!$
301 !!$ vv = 0.d0
302 !!$ RETURN
303 !!$ END FUNCTION H_B_quasi_static
304 
305  !===Magnetic field for boundary conditions in the Maxwell equations.
306  FUNCTION hexact(H_mesh,TYPE, rr, m, mu_H_field, t) RESULT(vv)
307  IMPLICIT NONE
308  TYPE(mesh_type), INTENT(IN) :: h_mesh
309  INTEGER , INTENT(IN) :: type
310  REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
311  INTEGER , INTENT(IN) :: m
312  REAL(KIND=8), INTENT(IN) :: t
313  REAL(KIND=8), DIMENSION(:), INTENT(IN) :: mu_h_field
314  REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
315  REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: r,z, theta, rho
316  REAL(KIND=8) :: aa=0.5d0, bb=1.d0, mu, mu0=1.d0, &
317  capa,capb, capc, capd
318 
319  IF (m/=0) THEN
320  vv = 0.d0
321  RETURN
322  END IF
323 
324  !CHAMP DURAND, configuration phi/H/phi (H single-valued)
325  mu = maxval(mu_h_field)
326  r = rr(1,:)
327  z = rr(2,:)
328  theta = atan2(r,z)
329  rho = sqrt(r**2+z**2)
330 
331  capa = -9*mu*mu0/((2*mu+mu0)*(mu+2*mu0) - 2*(mu-mu0)**2*(aa/bb)**3)
332  capd = (2*mu+mu0)*(mu-mu0)*((bb/aa)**3-1.d0)/((2*mu+mu0)*(mu+2*mu0) - 2*(mu-mu0)**2*(aa/bb)**3)
333  capc = (1.d0 - mu0/mu)*capa/3
334  capb = (2.d0 + mu0/mu)*capa/3
335 
336  IF (type==1) THEN
337  vv = 3*capc*(aa/rho)**3*cos(theta)*sin(theta)
338  ELSE IF(type==5) THEN
339  vv = -capb + capc*(aa/rho)**3*(3.d0*cos(theta)**2-1.d0)
340  ELSE
341  vv = 0.d0
342  END IF
343  RETURN
344 
345  !===Dummies variables to avoid warning
346  r=h_mesh%rr(1,1); r=t
347  !===Dummies variables to avoid warning
348  END FUNCTION hexact
349 
350  !===Scalar potential for boundary conditions in the Maxwell equations.
351  FUNCTION phiexact(TYPE, rr, m, mu_phi,t) RESULT(vv)
352  IMPLICIT NONE
353  INTEGER , INTENT(IN) :: type
354  REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
355  INTEGER , INTENT(IN) :: m
356  REAL(KIND=8), INTENT(IN) :: mu_phi, t
357  REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
358  REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: r, z, theta, rho
359  INTEGER :: n
360  REAL(KIND=8) :: a=0.5d0, b=1.d0, mu, mu0=1.d0, &
361  capa, capd
362 
363  IF (m/=0) THEN
364  vv = 0.d0
365  RETURN
366  END IF
367 
368  !CHAMP DURAND
369  mu = maxval(inputs%mu_H)
370  r = rr(1,:)
371  z = rr(2,:)
372  rho = sqrt(r**2+z**2)
373 
374  DO n = 1, SIZE(rho)
375  IF (rho(n).LE.1.d-10) THEN
376  theta(n) = 0.d0
377  ELSE
378  theta(n) = atan2(r(n),z(n))
379  END IF
380  END DO
381 
382  capa = -9*mu*mu0/((2*mu+mu0)*(mu+2*mu0) - 2*(mu-mu0)**2*(a/b)**3)
383  capd = (2*mu+mu0)*(mu-mu0)*((b/a)**3-1.d0)/((2*mu+mu0)*(mu+2*mu0) - 2*(mu-mu0)**2*(a/b)**3)
384 
385 
386  DO n = 1, SIZE(rho)
387  IF (type==1 .AND. rho(n).LE. (a+1.d-1)) THEN
388  vv(n) = -capa*rho(n)*cos(theta(n))
389  ELSE IF (type==1 .AND. rho(n) .GE. (b-1.d-1)) THEN
390  vv(n) = (rho(n)*cos(theta(n)) - capd*cos(theta(n))*a**3/rho(n)**2) !*(t/t_al)**3/(1.d0+(t/t_al)**3)
391  ELSE
392  vv(n) = 0.d0
393  END IF
394  END DO
395  RETURN
396 
397  !===Dummies variables to avoid warning
398  r=mu_phi; r=t
399  !===Dummies variables to avoid warning
400  END FUNCTION phiexact
401 
402  !===Current in Ohm's law. Curl(H) = sigma(E + uxB) + current
403  FUNCTION jexact_gauss(TYPE, rr, m, mu_phi, sigma, mu_H, t, mesh_id, opt_B_ext) RESULT(vv)
404  IMPLICIT NONE
405  INTEGER , INTENT(IN) :: type
406  REAL(KIND=8), DIMENSION(:), INTENT(IN) :: rr
407  INTEGER , INTENT(IN) :: m
408  REAL(KIND=8), INTENT(IN) :: mu_phi, sigma, mu_h, t
409  INTEGER , INTENT(IN) :: mesh_id
410  REAL(KIND=8), DIMENSION(6), OPTIONAL,INTENT(IN) :: opt_b_ext
411  REAL(KIND=8) :: vv
412  REAL(KIND=8) :: r
413  INTEGER :: n
414 
415  vv=0.d0
416  RETURN
417 
418  !===Dummies variables to avoid warning
419  r=rr(1); r=mu_phi; r=sigma; r=mu_h; r=t; n=type; n=m; n=mesh_id
420  IF (present(opt_b_ext)) r=opt_b_ext(1)
421  !===Dummies variables to avoid warning
422  END FUNCTION jexact_gauss
423 
424  !===Electric field for Neumann BC (cf. doc)
425  FUNCTION eexact_gauss(TYPE, rr, m, mu_phi, sigma, mu_H, t) RESULT(vv)
426  IMPLICIT NONE
427  INTEGER, INTENT(IN) :: type
428  REAL(KIND=8), DIMENSION(:), INTENT(IN) :: rr
429  INTEGER, INTENT(IN) :: m
430  REAL(KIND=8), INTENT(IN) :: mu_phi, sigma, mu_h, t
431  REAL(KIND=8) :: vv
432  REAL(KIND=8) :: r
433  INTEGER :: n
434 
435  vv = 0.d0
436  RETURN
437 
438  !===Dummies variables to avoid warning
439  r=rr(1); r=mu_phi; r=sigma; r=mu_h; r=t; n=type; n=m
440  !===Dummies variables to avoid warning
441  END FUNCTION eexact_gauss
442 
443  !===Initialization of magnetic field and scalar potential (if present)
444  SUBROUTINE init_maxwell(H_mesh, phi_mesh, time, dt, mu_H_field, mu_phi, &
445  list_mode, hn1, hn, phin1, phin)
446  IMPLICIT NONE
447  TYPE(mesh_type) :: h_mesh, phi_mesh
448  REAL(KIND=8), INTENT(OUT):: time
449  REAL(KIND=8), INTENT(IN) :: dt
450  REAL(KIND=8), DIMENSION(:), INTENT(IN) :: mu_h_field
451  REAL(KIND=8), INTENT(IN) :: mu_phi
452  INTEGER, DIMENSION(:), INTENT(IN) :: list_mode
453  REAL(KIND=8), DIMENSION(:,:,:), INTENT(OUT):: hn, hn1
454  REAL(KIND=8), DIMENSION(:,:,:), INTENT(OUT):: phin, phin1
455  REAL(KIND=8) :: r
456  INTEGER :: n
457 
458  hn1 = 0.d0
459  hn = 0.d0
460  phin1 = 0.d0
461  phin = 0.d0
462  time=0.d0
463  RETURN
464 
465  !===Dummies variables to avoid warning
466  r=h_mesh%rr(1,1); r=phi_mesh%rr(1,1); r=dt; r=mu_h_field(1); r=mu_phi; n=SIZE(list_mode)
467  !===Dummies variables to avoid warning
468  END SUBROUTINE init_maxwell
469 
470 !!$ !===Analytical permeability (if needed)
471 !!$ !===This function is not needed unless the flag
472 !!$ !=== ===Use FEM Interpolation for magnetic permeability (true/false)
473 !!$ !===is activated and set to .FALSE. in the data data file. Default is .TRUE.
474 !!$ FUNCTION mu_bar_in_fourier_space(H_mesh,nb,ne,pts,pts_ids) RESULT(vv)
475 !!$ IMPLICIT NONE
476 !!$ TYPE(mesh_type), INTENT(IN) :: H_mesh
477 !!$ REAL(KIND=8), DIMENSION(ne-nb+1) :: vv
478 !!$ INTEGER, INTENT(IN) :: nb, ne
479 !!$ REAL(KIND=8),DIMENSION(2,ne-nb+1),OPTIONAL :: pts
480 !!$ INTEGER, DIMENSION(ne-nb+1), OPTIONAL :: pts_ids
481 !!$
482 !!$ vv = 1.d0
483 !!$ CALL error_petsc('mu_bar_in_fourier_space: should not be called for this test')
484 !!$ RETURN
485 !!$ END FUNCTION mu_bar_in_fourier_space
486 
487 !!$ !===Analytical mu_in_fourier_space (if needed)
488 !!$ !===This function is not needed unless the flag
489 !!$ !=== ===Use FEM Interpolation for magnetic permeability (true/false)
490 !!$ !===is activated and set to .FALSE. in the data data file. Default is .TRUE.
491 !!$ FUNCTION grad_mu_bar_in_fourier_space(pt,pt_id) RESULT(vv)
492 !!$ IMPLICIT NONE
493 !!$ REAL(KIND=8),DIMENSION(2), INTENT(in):: pt
494 !!$ INTEGER,DIMENSION(1), INTENT(in) :: pt_id
495 !!$ REAL(KIND=8),DIMENSION(2) :: vv
496 !!$
497 !!$ vv=0.d0
498 !!$ CALL error_petsc('grad_mu_bar_in_fourier_space: should not be called for this test')
499 !!$ RETURN
500 !!$ END FUNCTION grad_mu_bar_in_fourier_space
501 
502 !!$ !===Analytical permeability, mu in real space (if needed)
503 !!$ FUNCTION mu_in_real_space(H_mesh,angles,nb_angles,nb,ne,time) RESULT(vv)
504 !!$ IMPLICIT NONE
505 !!$ TYPE(mesh_type), INTENT(IN) :: H_mesh
506 !!$ REAL(KIND=8), DIMENSION(:), INTENT(IN) :: angles
507 !!$ INTEGER, INTENT(IN) :: nb_angles
508 !!$ INTEGER, INTENT(IN) :: nb, ne
509 !!$ REAL(KIND=8), INTENT(IN) :: time
510 !!$ REAL(KIND=8), DIMENSION(nb_angles,ne-nb+1) :: vv
511 !!$
512 !!$ vv = 1.d0
513 !!$ CALL error_petsc('mu_in_real_space: should not be called for this test')
514 !!$ RETURN
515 !!$ END FUNCTION mu_in_real_space
516 
517 END MODULE boundary_test_7
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
Definition: doc_intro.h:199
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
Definition: doc_intro.h:193
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 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(size(rr, 2)), public phiexact(TYPE, rr, m, mu_phi, t)
real(kind=8) function, public eexact_gauss(TYPE, rr, m, mu_phi, sigma, mu_H, t)
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
Definition: doc_intro.h:193