SFEMaNS  version 4.1 (work in progress)
Reference documentation for SFEMaNS
 All Classes Files Functions Variables Groups Pages
abstract_interface.f90
Go to the documentation of this file.
2  abstract INTERFACE
3  SUBROUTINE sub_init_velocity_pressure(mesh_f, mesh_c, time, &
4  dt, list_mode, un_m1, un, pn_m1, pn, phin_m1, phin)
5  USE def_type_mesh
6  TYPE(mesh_type) :: mesh_f, mesh_c
7  REAL(KIND=8), INTENT(OUT):: time
8  REAL(KIND=8), INTENT(IN) :: dt
9  INTEGER, DIMENSION(:), INTENT(IN) :: list_mode
10  REAL(KIND=8), DIMENSION(:,:,:), INTENT(OUT):: un_m1, un
11  REAL(KIND=8), DIMENSION(:,:,:), INTENT(OUT):: pn_m1, pn, phin_m1, phin
12  END SUBROUTINE sub_init_velocity_pressure
13 
14  SUBROUTINE sub_init_temperature(mesh, time, dt, list_mode, tempn, tempn_m1)
15  USE def_type_mesh
16  TYPE(mesh_type) :: mesh
17  REAL(KIND=8), INTENT(OUT):: time
18  REAL(KIND=8), INTENT(IN) :: dt
19  INTEGER, DIMENSION(:), INTENT(IN) :: list_mode
20  REAL(KIND=8), DIMENSION(:,:,:), INTENT(OUT):: tempn_m1, tempn
21  INTEGER :: mode, i, j
22  END SUBROUTINE sub_init_temperature
23 
24  SUBROUTINE sub_init_level_set(pp_mesh, time, &
25  dt, list_mode, level_set_m1, level_set)
26  USE def_type_mesh
27  TYPE(mesh_type) :: pp_mesh
28  REAL(KIND=8), INTENT(OUT):: time
29  REAL(KIND=8), INTENT(IN) :: dt
30  INTEGER, DIMENSION(:), INTENT(IN) :: list_mode
31  REAL(KIND=8), DIMENSION(:,:,:,:), INTENT(OUT):: level_set, level_set_m1
32  END SUBROUTINE sub_init_level_set
33 
34  FUNCTION sub_source_in_ns_momentum(TYPE, rr, mode, i, time, Re, ty, &
35  opt_density, opt_tempn) result(vv)
36  INTEGER , INTENT(IN) :: type
37  REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
38  INTEGER , INTENT(IN) :: mode, i
39  REAL(KIND=8), INTENT(IN) :: time
40  REAL(KIND=8), INTENT(IN) :: re
41  CHARACTER(LEN=2), INTENT(IN) :: ty
42  REAL(KIND=8), DIMENSION(:,:,:), OPTIONAL, INTENT(IN) :: opt_density
43  REAL(KIND=8), DIMENSION(:,:,:), OPTIONAL, INTENT(IN) :: opt_tempn
44  REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
45  END FUNCTION sub_source_in_ns_momentum
46 
47  FUNCTION sub_source_in_temperature(TYPE, rr, m, t) RESULT(vv)
48  INTEGER , INTENT(IN) :: type
49  REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
50  INTEGER , INTENT(IN) :: m
51  REAL(KIND=8), INTENT(IN) :: t
52  REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
53  END FUNCTION sub_source_in_temperature
54 
55  FUNCTION sub_source_in_level_set(interface_nb,TYPE, rr, m, t) RESULT(vv)
56  INTEGER , INTENT(IN) :: type
57  REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
58  INTEGER , INTENT(IN) :: m, interface_nb
59  REAL(KIND=8), INTENT(IN) :: t
60  REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
61  END FUNCTION sub_source_in_level_set
62 
63  FUNCTION sub_vv_exact(TYPE,rr,m,t) RESULT(vv)
64  INTEGER , INTENT(IN) :: type
65  REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
66  INTEGER, INTENT(IN) :: m
67  REAL(KIND=8), INTENT(IN) :: t
68  REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
69  END FUNCTION sub_vv_exact
70 
71  FUNCTION sub_imposed_velocity_by_penalty(rr,t) RESULT(vv)
72  REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
73  REAL(KIND=8), INTENT(IN) :: t
74  REAL(KIND=8), DIMENSION(SIZE(rr,2),6) :: vv
76 
77  FUNCTION sub_pp_exact(TYPE,rr,m,t) RESULT (vv)
78  INTEGER , INTENT(IN) :: type
79  REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
80  INTEGER , INTENT(IN) :: m
81  REAL(KIND=8), INTENT(IN) :: t
82  REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
83  END FUNCTION sub_pp_exact
84 
85  FUNCTION sub_temperature_exact(TYPE,rr,m,t) RESULT (vv)
86  INTEGER, INTENT(IN) :: type
87  REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
88  INTEGER , INTENT(IN) :: m
89  REAL(KIND=8), INTENT(IN) :: t
90  REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
91  END FUNCTION sub_temperature_exact
92 
93  FUNCTION sub_level_set_exact(interface_nb,TYPE,rr,m,t) RESULT (vv)
94  INTEGER , INTENT(IN) :: type
95  REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
96  INTEGER , INTENT(IN) :: m, interface_nb
97  REAL(KIND=8), INTENT(IN) :: t
98  REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
99  END FUNCTION sub_level_set_exact
100 
101  FUNCTION sub_penal_in_real_space(mesh,rr_gauss,angles,nb_angles,nb,ne,time) RESULT(vv)
102  USE def_type_mesh
103  TYPE(mesh_type) :: mesh
104  REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr_gauss
105  REAL(KIND=8), DIMENSION(:), INTENT(IN) :: angles
106  INTEGER, INTENT(IN) :: nb_angles
107  INTEGER, INTENT(IN) :: nb, ne
108  REAL(KIND=8), INTENT(IN) :: time
109  REAL(KIND=8), DIMENSION(nb_angles,ne-nb+1) :: vv
110  END FUNCTION sub_penal_in_real_space
111 
112  FUNCTION sub_extension_velocity(TYPE, H_mesh, mode, t, n_start) RESULT(vv)
113  USE def_type_mesh
114  TYPE(mesh_type), INTENT(IN) :: h_mesh
115  INTEGER , INTENT(IN) :: type, n_start
116  INTEGER, INTENT(IN) :: mode
117  REAL(KIND=8), INTENT(IN) :: t
118  REAL(KIND=8), DIMENSION(H_Mesh%np) :: vv
119  END FUNCTION sub_extension_velocity
120 
121  FUNCTION sub_vexact(m, H_mesh) RESULT(vv) !Set uniquement a l'induction
122  USE def_type_mesh
123  TYPE(mesh_type), INTENT(IN) :: h_mesh
124  INTEGER, INTENT(IN) :: m
125  REAL(KIND=8), DIMENSION(H_mesh%np,6) :: vv
126  END FUNCTION sub_vexact
127 
128  FUNCTION sub_h_b_quasi_static(char_h_b, rr, m) RESULT(vv)
129  CHARACTER(LEN=1), INTENT(IN) :: char_h_b
130  REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
131  INTEGER, INTENT(IN) :: m
132  REAL(KIND=8), DIMENSION(SIZE(rr,2),6) :: vv
133  END FUNCTION sub_h_b_quasi_static
134 
135  FUNCTION sub_hexact(H_mesh, TYPE, rr, m, mu_H_field, t) RESULT(vv)
136  USE def_type_mesh
137  TYPE(mesh_type), INTENT(IN) :: h_mesh
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(:), INTENT(IN) :: mu_h_field
143  REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
144  END FUNCTION sub_hexact
145 
146  FUNCTION sub_phiexact(TYPE, rr, m, mu_phi,t) RESULT(vv)
147  INTEGER , INTENT(IN) :: type
148  REAL(KIND=8), DIMENSION(:,:), INTENT(IN) :: rr
149  INTEGER , INTENT(IN) :: m
150  REAL(KIND=8), INTENT(IN) :: mu_phi, t
151  REAL(KIND=8), DIMENSION(SIZE(rr,2)) :: vv
152  END FUNCTION sub_phiexact
153 
154  FUNCTION sub_jexact_gauss(TYPE, rr, m, mu_phi, sigma, mu_H, t, &
155  mesh_id, opt_b_ext) result(vv)
156  INTEGER , INTENT(IN) :: type
157  REAL(KIND=8), DIMENSION(:), INTENT(IN) :: rr
158  INTEGER , INTENT(IN) :: m
159  REAL(KIND=8), INTENT(IN) :: mu_phi, sigma, mu_h, t
160  INTEGER , INTENT(IN) :: mesh_id
161  REAL(KIND=8), DIMENSION(6), OPTIONAL,INTENT(IN) :: opt_b_ext
162  REAL(KIND=8) :: vv
163  END FUNCTION sub_jexact_gauss
164 
165  FUNCTION sub_eexact_gauss(TYPE, rr, m, mu_phi, sigma, mu_H, t) RESULT(vv)
166  INTEGER, INTENT(IN) :: type
167  REAL(KIND=8), DIMENSION(:), INTENT(IN) :: rr
168  INTEGER, INTENT(IN) :: m
169  REAL(KIND=8), INTENT(IN) :: mu_phi, sigma, mu_h, t
170  REAL(KIND=8) :: vv
171  END FUNCTION sub_eexact_gauss
172 
173  SUBROUTINE sub_init_maxwell(H_mesh, phi_mesh, time, dt, mu_H_field, mu_phi, &
174  list_mode, hn1, hn, phin1, phin)
175  USE def_type_mesh
176  TYPE(mesh_type) :: h_mesh, phi_mesh
177  REAL(KIND=8), INTENT(OUT):: time
178  REAL(KIND=8), INTENT(IN) :: dt
179  REAL(KIND=8), DIMENSION(:), INTENT(IN) :: mu_h_field
180  REAL(KIND=8), INTENT(IN) :: mu_phi
181  INTEGER, DIMENSION(:), INTENT(IN) :: list_mode
182  REAL(KIND=8), DIMENSION(:,:,:), INTENT(OUT):: hn, hn1
183  REAL(KIND=8), DIMENSION(:,:,:), INTENT(OUT):: phin, phin1
184  END SUBROUTINE sub_init_maxwell
185 
186  FUNCTION sub_mu_bar_in_fourier_space(H_mesh,nb,ne,pts,pts_ids) RESULT(vv)
187  USE def_type_mesh
188  TYPE(mesh_type), INTENT(IN) :: h_mesh
189  REAL(KIND=8), DIMENSION(ne-nb+1) :: vv
190  INTEGER, INTENT(IN) :: nb, ne
191  REAL(KIND=8),DIMENSION(2,ne-nb+1),OPTIONAL :: pts
192  INTEGER, DIMENSION(ne-nb+1), OPTIONAL :: pts_ids
193  END FUNCTION sub_mu_bar_in_fourier_space
194 
195  FUNCTION sub_grad_mu_bar_in_fourier_space(pt,pt_id) RESULT(vv)
196  REAL(KIND=8),DIMENSION(2), INTENT(in):: pt
197  INTEGER,DIMENSION(1), INTENT(in) :: pt_id
198  REAL(KIND=8),DIMENSION(2) :: vv
200 
201  FUNCTION sub_mu_in_real_space(H_mesh,angles,nb_angles,nb,ne,time) RESULT(vv)
202  USE def_type_mesh
203  TYPE(mesh_type), INTENT(IN) :: h_mesh
204  REAL(KIND=8), DIMENSION(:), INTENT(IN) :: angles
205  INTEGER, INTENT(IN) :: nb_angles
206  INTEGER, INTENT(IN) :: nb, ne
207  REAL(KIND=8), INTENT(IN) :: time
208  REAL(KIND=8), DIMENSION(nb_angles,ne-nb+1) :: vv
209  END FUNCTION sub_mu_in_real_space
210 
211  FUNCTION sub_sigma_bar_in_fourier_space(H_mesh) RESULT(vv)
212  USE def_type_mesh
213  TYPE(mesh_type), INTENT(IN) :: h_mesh
214  REAL(KIND=8), DIMENSION(SIZE(H_mesh%rr,2)) :: vv
215  END FUNCTION sub_sigma_bar_in_fourier_space
216 
217  FUNCTION sub_kelvin_force_coeff(temp) RESULT(vv)
218  REAL(KIND=8) :: temp
219  REAL(KIND=8) :: vv
220  END FUNCTION sub_kelvin_force_coeff
221 
222  END INTERFACE
223 END MODULE abstract_interface
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 sub_jexact_gauss(TYPE, rr, m, mu_phi, sigma, mu_H, t, mesh_id, opt_B_ext)
real(kind=8) function, dimension(size(rr, 2), 6) sub_h_b_quasi_static(char_h_b, rr, m)
real(kind=8) function, dimension(size(rr, 2)) sub_phiexact(TYPE, rr, m, mu_phi, t)
real(kind=8) function, dimension(size(rr, 2)) sub_source_in_ns_momentum(TYPE, rr, mode, i, time, Re, ty, opt_density, opt_tempn)
real(kind=8) function sub_eexact_gauss(TYPE, rr, m, mu_phi, sigma, mu_H, t)
real(kind=8) function, dimension(h_mesh%np, 6) sub_vexact(m, H_mesh)
real(kind=8) function, dimension(size(rr, 2)) sub_hexact(H_mesh, TYPE, rr, m, mu_H_field, t)