SFEMaNS  version 5.3
Reference documentation for SFEMaNS
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)
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)
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)
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)
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)
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
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)
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)
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)
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)
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)
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_chi_coeff_law(temp) RESULT(vv)
218  REAL(KIND=8) :: temp
219  REAL(KIND=8) :: vv
220  END FUNCTION sub_chi_coeff_law
221 
222  FUNCTION sub_t_dchi_dt_coeff_law(temp) RESULT(vv)
223  REAL(KIND=8) :: temp
224  REAL(KIND=8) :: vv
225  END FUNCTION sub_t_dchi_dt_coeff_law
226 
227  FUNCTION sub_nu_tilde_law(temp) RESULT(vv)
228  REAL(KIND=8) :: temp
229  REAL(KIND=8) :: vv
230  END FUNCTION sub_nu_tilde_law
231 
232  END INTERFACE
233 END MODULE abstract_interface