SFEMaNS  version 4.1 (work in progress)
Reference documentation for SFEMaNS
 All Classes Files Functions Variables Groups Pages
condlim_test_25.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_velocity_pressure
10 !!$ PUBLIC :: init_temperature
11  PUBLIC :: init_level_set
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  REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: r, z
129  INTEGER :: m
130  REAL(KIND=8) :: t
131  CHARACTER(LEN=2) :: np
132 
133  IF (present(opt_tempn)) CALL error_petsc('temperature should not be present for test 25')
134 
135  r = rr(1,:)
136  z = rr(2,:)
137  m = mode
138  t = time
139 
140  IF (m==0 .AND. type==1) THEN
141  vv = -r**3*(1+r**2+z**2)*sin(-z+t)**2
142  ELSE IF (m==0 .AND. type==3) THEN
143  vv = r**2*(1+r**2+z**2)*cos(-z+t) &
144  - 1/re*(3.d0+4.d0*r**2+3.d0*z**2 &
145  - r**4 - r**2*z**2)*sin(-z+t) &
146  + 2.d0/re*z*r**2*cos(-z+t)
147  ELSE
148  vv = 0.d0
149  END IF
150  RETURN
151 
152  !===Dummies variables to avoid warning
153  m=i; m=SIZE(opt_density,1); np=ty
154  !===Dummies variables to avoid warning
155  END FUNCTION source_in_ns_momentum
156 
157 !!$ !===Extra source in temperature equation. Always called.
158 !!$ FUNCTION source_in_temperature(TYPE, rr, m, t)RESULT(vv)
159 !!$ IMPLICIT NONE
160 !!$ INTEGER , INTENT(IN) :: TYPE
161 !!$ REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
162 !!$ INTEGER , INTENT(IN) :: m
163 !!$ REAL(KIND=8), INTENT(IN) :: t
164 !!$ REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
165 !!$
166 !!$ vv = 0.d0
167 !!$ CALL error_petsc('source_in_temperature: should not be called for this test')
168 !!$ RETURN
169 !!$ END FUNCTION source_in_temperature
170 
171  !===Extra source in level set equation. Always called.
172  FUNCTION source_in_level_set(interface_nb,TYPE, rr, m, t)RESULT(vv)
173  IMPLICIT NONE
174  INTEGER , INTENT(IN) :: type
175  REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
176  INTEGER , INTENT(IN) :: m, interface_nb
177  REAL(KIND=8), INTENT(IN) :: t
178  REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
179  REAL(KIND=8) :: r
180  INTEGER :: n
181 
182  vv = 0.d0
183  RETURN
184 
185  !===Dummies variables to avoid warning
186  n=type; n=SIZE(rr,1); n=m; n=interface_nb; r=t
187  !===Dummies variables to avoid warning
188  END FUNCTION source_in_level_set
189 
190  !===Velocity for boundary conditions in Navier-Stokes.
191  !===Can be used also to initialize velocity in: init_velocity_pressure_temperature
192  FUNCTION vv_exact(TYPE,rr,m,t) RESULT(vv)
193  IMPLICIT NONE
194  INTEGER , INTENT(IN) :: type
195  REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
196  INTEGER, INTENT(IN) :: m
197  REAL(KIND=8), INTENT(IN) :: t
198  REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
199  REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: r, z
200 
201  r = rr(1,:)
202  z = rr(2,:)
203 
204  IF (m==0 .AND. type==3) THEN
205  vv = r**2*sin(-z+t)
206  ELSE
207  vv = 0.d0
208  END IF
209  RETURN
210  END FUNCTION vv_exact
211 
212 !!$ !===Solid velocity imposed when using penalty technique
213 !!$ !===Defined in Fourier space on mode 0 only.
214 !!$ FUNCTION imposed_velocity_by_penalty(rr,t) RESULT(vv)
215 !!$ IMPLICIT NONE
216 !!$ REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
217 !!$ REAL(KIND=8), INTENT(IN) :: t
218 !!$ REAL(KIND=8), DIMENSION(SIZE(rr,2),6) :: vv
219 !!$
220 !!$ vv=0.d0
221 !!$ RETURN
222 !!$ END FUNCTION imposed_velocity_by_penalty
223 
224  !===Pressure for boundary conditions in Navier-Stokes.
225  !===Can be used also to initialize pressure in the subroutine init_velocity_pressure.
226  !===Use this routine for outflow BCs only.
227  !===CAUTION: Do not enfore BCs on pressure where normal component
228  ! of velocity is prescribed.
229  FUNCTION pp_exact(TYPE,rr,m,t) RESULT (vv)
230  IMPLICIT NONE
231  INTEGER , INTENT(IN) :: type
232  REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
233  INTEGER , INTENT(IN) :: m
234  REAL(KIND=8), INTENT(IN) :: t
235  REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
236  REAL(KIND=8) :: r
237  INTEGER :: n
238 
239  vv = 0.d0
240  RETURN
241 
242  !===Dummies variables to avoid warning
243  n=type; n=SIZE(rr,1); n=m; r=t
244  !===Dummies variables to avoid warning
245  END FUNCTION pp_exact
246 
247 !!$ !===Temperature for boundary conditions in temperature equation.
248 !!$ FUNCTION temperature_exact(TYPE,rr,m,t) RESULT (vv)
249 !!$ IMPLICIT NONE
250 !!$ INTEGER , INTENT(IN) :: TYPE
251 !!$ REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
252 !!$ INTEGER , INTENT(IN) :: m
253 !!$ REAL(KIND=8), INTENT(IN) :: t
254 !!$ REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
255 !!$
256 !!$ vv = 0.d0
257 !!$ CALL error_petsc('temperature_exact: should not be called for this test')
258 !!$ RETURN
259 !!$ END FUNCTION temperature_exact
260 
261  !===Can be used to initialize level set in the subroutine init_level_set.
262  FUNCTION level_set_exact(interface_nb,TYPE,rr,m,t) RESULT (vv)
263  IMPLICIT NONE
264  INTEGER , INTENT(IN) :: type
265  REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
266  INTEGER , INTENT(IN) :: m, interface_nb
267  REAL(KIND=8), INTENT(IN) :: t
268  REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
269  REAL(KIND=8) :: r
270 
271  IF (interface_nb==1) THEN
272  IF (m==0 .AND. TYPE ==1) then
273  vv = rr(1,:)**2 + rr(2,:)**2
274  ELSE
275  vv = 0.d0
276  END IF
277  ELSE
278  CALL error_petsc(' BUG in level_set_exact, we should compute only 1 level set')
279  END IF
280  RETURN
281 
282  !===Dummies variables to avoid warning
283  r=t
284  !===Dummies variables to avoid warning
285  END FUNCTION level_set_exact
286 
287 !!$ !===Penalty coefficient (if needed)
288 !!$ !===This coefficient is equal to zero in subdomain
289 !!$ !===where penalty is applied (penalty is zero in solid)
290 !!$ FUNCTION penal_in_real_space(mesh,rr_gauss,angles,nb_angles,nb,ne,time) RESULT(vv)
291 !!$ IMPLICIT NONE
292 !!$ TYPE(mesh_type) :: mesh
293 !!$ REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr_gauss
294 !!$ REAL(KIND=8), DIMENSION(:), INTENT(IN) :: angles
295 !!$ INTEGER, INTENT(IN) :: nb_angles
296 !!$ INTEGER, INTENT(IN) :: nb, ne
297 !!$ REAL(KIND=8), INTENT(IN) :: time
298 !!$ REAL(KIND=8), DIMENSION(nb_angles,ne-nb+1) :: vv
299 !!$
300 !!$ vv = 1.d0
301 !!$ CALL error_petsc('penal_in_real_space: should not be called for this test')
302 !!$ RETURN
303 !!$ END FUNCTION penal_in_real_space
304 
305 !!$ !===Extension of the velocity field in the solid.
306 !!$ !===Used when temperature or Maxwell equations are solved.
307 !!$ !===It extends the velocity field on the Navier-Stokes domain to a
308 !!$ !===velocity field on the temperature and the Maxwell domain.
309 !!$ !===It is also used if problem type=mxw and restart velocity
310 !!$ !===is set to true in data (type problem denoted mxx in the code).
311 !!$ FUNCTION extension_velocity(TYPE, H_mesh, mode, t, n_start) RESULT(vv)
312 !!$ IMPLICIT NONE
313 !!$ TYPE(mesh_type), INTENT(IN) :: H_mesh
314 !!$ INTEGER , INTENT(IN) :: TYPE, n_start
315 !!$ INTEGER, INTENT(IN) :: mode
316 !!$ REAL(KIND=8), INTENT(IN) :: t
317 !!$ REAL(KIND=8), DIMENSION(H_Mesh%np) :: vv
318 !!$
319 !!$ vv = 0.d0
320 !!$ RETURN
321 !!$
322 !!$ END FUNCTION extension_velocity
323 
324  !===============================================================================
325  ! Boundary conditions for Maxwell
326  !===============================================================================
327 !!$ !===Velocity used in the induction equation.
328 !!$ !===Used only if problem type is mxw and restart velocity is false
329 !!$ FUNCTION Vexact(m, H_mesh) RESULT(vv) !Set uniquement a l'induction
330 !!$ IMPLICIT NONE
331 !!$ TYPE(mesh_type), INTENT(IN) :: H_mesh
332 !!$ INTEGER, INTENT(IN) :: m
333 !!$ REAL(KIND=8), DIMENSION(H_mesh%np,6) :: vv
334 !!$
335 !!$ vv = 0.d0
336 !!$ CALL error_petsc('Vexact: should not be called for this test')
337 !!$ END FUNCTION Vexact
338 
339 !!$ !===Magnetic field and magnetic induction for quasi-static approximation
340 !!$ !===if needed
341 !!$ FUNCTION H_B_quasi_static(char_h_b, rr, m) RESULT(vv)
342 !!$ IMPLICIT NONE
343 !!$ CHARACTER(LEN=1), INTENT(IN) :: char_h_b
344 !!$ REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
345 !!$ INTEGER, INTENT(IN) :: m
346 !!$ REAL(KIND=8), DIMENSION(SIZE(rr,2),6) :: vv
347 !!$
348 !!$ vv = 0.d0
349 !!$ RETURN
350 !!$ END FUNCTION H_B_quasi_static
351 
352 !!$ !===Magnetic field for boundary conditions in the Maxwell equations.
353 !!$ FUNCTION Hexact(H_mesh,TYPE, rr, m, mu_H_field, t) RESULT(vv)
354 !!$ IMPLICIT NONE
355 !!$ TYPE(mesh_type), INTENT(IN) :: H_mesh
356 !!$ INTEGER , INTENT(IN) :: TYPE
357 !!$ REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
358 !!$ INTEGER , INTENT(IN) :: m
359 !!$ REAL(KIND=8), INTENT(IN) :: t
360 !!$ REAL(KIND=8), DIMENSION(:), INTENT(IN) :: mu_H_field
361 !!$ REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
362 !!$
363 !!$ vv=0.d0
364 !!$ CALL error_petsc('Hexact: should not be called for this test')
365 !!$ RETURN
366 !!$ END FUNCTION Hexact
367 
368 !!$ !===Scalar potential for boundary conditions in the Maxwell equations.
369 !!$ FUNCTION Phiexact(TYPE, rr, m, mu_phi,t) RESULT(vv)
370 !!$ IMPLICIT NONE
371 !!$ INTEGER , INTENT(IN) :: TYPE
372 !!$ REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
373 !!$ INTEGER , INTENT(IN) :: m
374 !!$ REAL(KIND=8), INTENT(IN) :: mu_phi, t
375 !!$ REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
376 !!$
377 !!$ vv=0.d0
378 !!$ CALL error_petsc('Phiexact: should not be called for this test')
379 !!$ RETURN
380 !!$ END FUNCTION Phiexact
381 
382 !!$ !===Current in Ohm's law. Curl(H) = sigma(E + uxB) + current
383 !!$ FUNCTION Jexact_gauss(TYPE, rr, m, mu_phi, sigma, mu_H, t, mesh_id, opt_B_ext) RESULT(vv)
384 !!$ IMPLICIT NONE
385 !!$ INTEGER , INTENT(IN) :: TYPE
386 !!$ REAL(KIND=8), DIMENSION(:), INTENT(IN) :: rr
387 !!$ INTEGER , INTENT(IN) :: m
388 !!$ REAL(KIND=8), INTENT(IN) :: mu_phi, sigma, mu_H, t
389 !!$ INTEGER , INTENT(IN) :: mesh_id
390 !!$ REAL(KIND=8), DIMENSION(6), OPTIONAL,INTENT(IN) :: opt_B_ext
391 !!$ REAL(KIND=8) :: vv
392 !!$ REAL(KIND=8) :: alpha,beta
393 !!$
394 !!$ vv=0.d0
395 !!$ CALL error_petsc('Jexact_gauss: should not be called for this test')
396 !!$ RETURN
397 !!$ END FUNCTION Jexact_gauss
398 
399 !!$ !===Electric field for Neumann BC (cf. doc)
400 !!$ FUNCTION Eexact_gauss(TYPE, rr, m, mu_phi, sigma, mu_H, t) RESULT(vv)
401 !!$ IMPLICIT NONE
402 !!$ INTEGER, INTENT(IN) :: TYPE
403 !!$ REAL(KIND=8), DIMENSION(:), INTENT(IN) :: rr
404 !!$ INTEGER, INTENT(IN) :: m
405 !!$ REAL(KIND=8), INTENT(IN) :: mu_phi, sigma, mu_H, t
406 !!$ REAL(KIND=8) :: vv
407 !!$
408 !!$ vv = 0.d0
409 !!$ CALL error_petsc('Eexact: should not be called for this test')
410 !!$ END FUNCTION Eexact_gauss
411 
412 !!$ !===Initialization of magnetic field and scalar potential (if present)
413 !!$ SUBROUTINE init_maxwell(H_mesh, phi_mesh, time, dt, mu_H_field, mu_phi, &
414 !!$ list_mode, Hn1, Hn, phin1, phin)
415 !!$ IMPLICIT NONE
416 !!$ TYPE(mesh_type) :: H_mesh, phi_mesh
417 !!$ REAL(KIND=8), INTENT(OUT):: time
418 !!$ REAL(KIND=8), INTENT(IN) :: dt
419 !!$ REAL(KIND=8), DIMENSION(:), INTENT(IN) :: mu_H_field
420 !!$ REAL(KIND=8), INTENT(IN) :: mu_phi
421 !!$ INTEGER, DIMENSION(:), INTENT(IN) :: list_mode
422 !!$ REAL(KIND=8), DIMENSION(:,:,:), INTENT(OUT):: Hn, Hn1
423 !!$ REAL(KIND=8), DIMENSION(:,:,:), INTENT(OUT):: phin, phin1
424 !!$
425 !!$ CALL error_petsc('init_maxwell: should not be called for this test')
426 !!$ END SUBROUTINE init_maxwell
427 
428 !!$ !===Analytical permeability (if needed)
429 !!$ !===This function is not needed unless the flag
430 !!$ !=== ===Use FEM Interpolation for magnetic permeability (true/false)
431 !!$ !===is activated and set to .FALSE. in the data data file. Default is .TRUE.
432 !!$ FUNCTION mu_bar_in_fourier_space(H_mesh,nb,ne,pts,pts_ids) RESULT(vv)
433 !!$ IMPLICIT NONE
434 !!$ TYPE(mesh_type), INTENT(IN) :: H_mesh
435 !!$ REAL(KIND=8), DIMENSION(ne-nb+1) :: vv
436 !!$ INTEGER, INTENT(IN) :: nb, ne
437 !!$ REAL(KIND=8),DIMENSION(2,ne-nb+1),OPTIONAL :: pts
438 !!$ INTEGER, DIMENSION(ne-nb+1), OPTIONAL :: pts_ids
439 !!$
440 !!$ vv = 1.d0
441 !!$ CALL error_petsc('mu_bar_in_fourier_space: should not be called for this test')
442 !!$ RETURN
443 !!$ END FUNCTION mu_bar_in_fourier_space
444 
445 !!$ !===Analytical mu_in_fourier_space (if needed)
446 !!$ !===This function is not needed unless the flag
447 !!$ !=== ===Use FEM Interpolation for magnetic permeability (true/false)
448 !!$ !===is activated and set to .FALSE. in the data data file. Default is .TRUE.
449 !!$ FUNCTION grad_mu_bar_in_fourier_space(pt,pt_id) RESULT(vv)
450 !!$ IMPLICIT NONE
451 !!$ REAL(KIND=8),DIMENSION(2), INTENT(in):: pt
452 !!$ INTEGER,DIMENSION(1), INTENT(in) :: pt_id
453 !!$ REAL(KIND=8),DIMENSION(2) :: vv
454 !!$
455 !!$ vv=0.d0
456 !!$ CALL error_petsc('grad_mu_bar_in_fourier_space: should not be called for this test')
457 !!$ RETURN
458 !!$ END FUNCTION grad_mu_bar_in_fourier_space
459 
460 !!$ !===Analytical permeability, mu in real space (if needed)
461 !!$ FUNCTION mu_in_real_space(H_mesh,angles,nb_angles,nb,ne,time) RESULT(vv)
462 !!$ IMPLICIT NONE
463 !!$ TYPE(mesh_type), INTENT(IN) :: H_mesh
464 !!$ REAL(KIND=8), DIMENSION(:), INTENT(IN) :: angles
465 !!$ INTEGER, INTENT(IN) :: nb_angles
466 !!$ INTEGER, INTENT(IN) :: nb, ne
467 !!$ REAL(KIND=8), INTENT(IN) :: time
468 !!$ REAL(KIND=8), DIMENSION(nb_angles,ne-nb+1) :: vv
469 !!$
470 !!$ vv = 1.d0
471 !!$ CALL error_petsc('mu_in_real_space: should not be called for this test')
472 !!$ RETURN
473 !!$ END FUNCTION mu_in_real_space
474 
475 END MODULE boundary_test_25
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
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(size(rr, 2)), public source_in_level_set(interface_nb, TYPE, rr, m, t)
real(kind=8) function, dimension(size(rr, 2)), public vv_exact(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)
Definition: my_util.f90:15
real(kind=8) function, dimension(size(rr, 2)), public level_set_exact(interface_nb, TYPE, rr, m, t)
subroutine, public init_level_set(vv_mesh, time, dt, list_mode, level_set_m1, level_set)
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