SFEMaNS  version 5.3
Reference documentation for SFEMaNS
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
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 hexact(H_mesh, TYPE, rr, m, mu_H_field, t)
type(my_data), public inputs
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)
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 eexact_gauss(TYPE, rr, m, mu_phi, sigma, mu_H, t)