8 SUBROUTINE post_proc_test(vv_mesh, pp_mesh, temp_mesh, H_mesh, phi_mesh, list_mode, &
9 un, pn, hn, bn, phin, tempn, level_setn, mu_h_field, &
10 time, m_max_c, comm_one_d, comm_one_d_ns, comm_one_d_temp)
18 #include "petsc/finclude/petsc.h" 21 TYPE(
mesh_type),
POINTER :: pp_mesh, vv_mesh
23 TYPE(
mesh_type),
POINTER :: H_mesh, phi_mesh
24 INTEGER,
POINTER,
DIMENSION(:) :: list_mode
25 REAL(KIND=8),
POINTER,
DIMENSION(:,:,:) :: un, pn, Hn, Bn, phin, tempn
26 REAL(KIND=8),
POINTER,
DIMENSION(:,:,:,:) :: level_setn
27 REAL(KIND=8),
POINTER,
DIMENSION(:) :: mu_H_field
30 REAL(KIND=8),
DIMENSION(SIZE(un,1), SIZE(un,2), SIZE(un,3)) :: un_m1, un_ex, un_error
31 REAL(KIND=8),
DIMENSION(SIZE(pn,1), SIZE(pn,2), SIZE(pn,3)) :: pn_m1, pn_ex, pn_error
32 REAL(KIND=8),
DIMENSION(SIZE(Hn,1), SIZE(Hn,2), SIZE(Hn,3)) :: Hn1, Hn_ex, Hn_error
33 REAL(KIND=8),
DIMENSION(SIZE(phin,1),SIZE(phin,2),SIZE(phin,3)) :: phin1
34 REAL(KIND=8),
DIMENSION(SIZE(tempn,1), SIZE(tempn,2), SIZE(tempn,3)) :: tempn_m1, tempn_ex, tempn_error
35 REAL(KIND=8),
DIMENSION(SIZE(level_setn,1),SIZE(level_setn,2),SIZE(level_setn,3),SIZE(level_setn,4)):: level_setn_m1
37 INTEGER :: i, k, code, rank, int_nb, n, TYPE
38 REAL(KIND=8),
DIMENSION(4) :: norm_err_loc, norm_err
39 REAL(KIND=8) :: err, norm
40 REAL(KIND=8) :: moyenne
41 mpi_comm,
DIMENSION(:),
POINTER :: comm_one_d, comm_one_d_ns, comm_one_d_temp
43 CALL mpi_comm_rank(mpi_comm_world,rank,code)
45 SELECT CASE(
inputs%numero_du_test_debug)
46 CASE(1,2,8,9,19,20,24,25,39,40)
49 un_m1(:,k,i) = un(:,k,i) - vv_exact(k,vv_mesh%rr,list_mode(i),time)
52 pn_m1(:,k,i) = pn(:,k,i) - pp_exact(k,pp_mesh%rr,list_mode(i),time)
54 IF (list_mode(i) == 0)
THEN 55 CALL moy(comm_one_d(1),pp_mesh, pn_m1(:,1,i),moyenne)
56 pn_m1(:,1,i) = pn_m1(:,1,i) - moyenne
61 norm_err(1) = sqrt(
dot_product_sf(comm_one_d_ns,vv_mesh, list_mode, un_m1, un_m1))
62 norm_err(2) =
norm_sf(comm_one_d_ns,
'sH1', vv_mesh, list_mode, un_m1)
63 norm_err(3) =
norm_sf(comm_one_d_ns,
'div', vv_mesh, list_mode, un)
64 norm_err(4) =
norm_sf(comm_one_d_ns,
'L2', pp_mesh, list_mode, pn_m1)
66 WRITE(10,*)
'Velocity field #####################' 67 WRITE(10,*)
'L2 error on velocity = ', norm_err(1)
68 WRITE(10,*)
'H1 error on velocity = ', norm_err(2)
69 WRITE(10,*)
'L2 norm of divergence = ', norm_err(3)
70 WRITE(10,*)
'Pressure field #####################' 71 WRITE(10,*)
'L2 error on pressure = ', norm_err(4)
74 IF (
inputs%if_temperature)
THEN 77 tempn_m1(:,k,i) = tempn(:,k,i) - temperature_exact(k,temp_mesh%rr, list_mode(i), time)
80 norm_err(1) =
norm_sf(comm_one_d_temp,
'L2', temp_mesh, list_mode, tempn_m1)
81 norm_err(2) =
norm_sf(comm_one_d_temp,
'sH1', temp_mesh, list_mode, tempn_m1)
83 WRITE(10,*)
'Temperature field#####################' 84 WRITE(10,*)
'L2 error on temperature = ', norm_err(1)
85 WRITE(10,*)
'H1 error on temperature = ', norm_err(2)
86 WRITE(10,*)
'Temperature field#####################' 90 IF (
inputs%if_level_set)
THEN 91 IF (
inputs%if_level_set_P2)
THEN 94 DO int_nb = 1,
inputs%nb_fluid - 1
95 level_setn_m1(int_nb,:,k,i) = level_setn(int_nb,:,k,i) &
96 -level_set_exact(int_nb,k,vv_mesh%rr,list_mode(i),time)
100 IF (
inputs%numero_du_test_debug==39)
THEN 101 norm_err(3) =
norm_s_l1_zero_mode(comm_one_d_ns, vv_mesh, list_mode,level_setn_m1(1,:,:,:))
103 WRITE(10,*)
'Level set field#####################' 104 WRITE(10,*)
'L1 error on level set', norm_err(3)
105 WRITE(10,*)
'Level set field#####################' 108 norm_err(3) =
norm_sf(comm_one_d_ns,
'L2', vv_mesh, list_mode,level_setn_m1(1,:,:,:))
110 WRITE(10,*)
'Level set field#####################' 111 WRITE(10,*)
'L2 error on level set', norm_err(3)
112 WRITE(10,*)
'Level set field#####################' 118 DO int_nb = 1,
inputs%nb_fluid - 1
119 level_setn_m1(int_nb,:,k,i) = level_setn(int_nb,:,k,i) &
120 -level_set_exact(int_nb,k,pp_mesh%rr,list_mode(i),time)
124 IF (
inputs%numero_du_test_debug==39)
THEN 125 norm_err(3) =
norm_s_l1_zero_mode(comm_one_d_ns, pp_mesh, list_mode,level_setn_m1(1,:,:,:))
127 WRITE(10,*)
'Level set field#####################' 128 WRITE(10,*)
'L1 error on level set', norm_err(3)
129 WRITE(10,*)
'Level set field#####################' 132 norm_err(3) =
norm_sf(comm_one_d_ns,
'L2', pp_mesh, list_mode,level_setn_m1(1,:,:,:))
134 WRITE(10,*)
'Level set field#####################' 135 WRITE(10,*)
'L2 error on level set', norm_err(3)
136 WRITE(10,*)
'Level set field#####################' 142 IF (
inputs%numero_du_test_debug==24)
THEN 145 DO n = 1,
SIZE(pp_mesh%rr,2)
146 IF (pp_mesh%rr(1,n).GT..5d0)
THEN 147 pn_m1(n,k,i) = pn_m1(n,k,i)
155 norm_err(4) =
norm_sf(comm_one_d_ns,
'L2', pp_mesh, list_mode, pn_m1)
157 WRITE(10,*)
'L2 error on pressure outter obstacle = ', norm_err(4)
165 hn1(:,k,i) = hn(:,k,i) - hexact(h_mesh, k, h_mesh%rr, list_mode(i), mu_h_field, time)
169 IF (
inputs%nb_dom_phi/=0)
THEN 172 phin1(:,k,i) = phin(:,k,i) - phiexact(k, phi_mesh%rr, list_mode(i),
inputs%mu_phi, time)
177 norm =
norm_sf(comm_one_d,
'L2', h_mesh, list_mode, hn)
178 err =
norm_sf(comm_one_d,
'L2', h_mesh, list_mode, hn1)
179 norm_err(1) = err/norm
181 norm =
norm_sf(comm_one_d,
'sH1', h_mesh, list_mode, hn)
182 err =
norm_sf(comm_one_d,
'curl', h_mesh, list_mode, hn1)
183 norm_err(2) = err/norm
185 norm =
norm_sf(comm_one_d,
'sH1', h_mesh, list_mode, bn)
186 err =
norm_sf(comm_one_d,
'div', h_mesh, list_mode, bn)
188 norm_err(3) = err/norm
190 IF (
inputs%nb_dom_phi/=0)
THEN 191 norm =
norm_sf(comm_one_d,
'sH1', phi_mesh, list_mode, phin)
192 err =
norm_sf(comm_one_d,
'sH1', phi_mesh, list_mode, phin1)
193 norm_err(4) = err/norm
195 norm_err(4) =
inputs%norm_ref(4)
199 WRITE(rank+10,*)
'Magnetic field #####################' 200 WRITE(rank+10,*)
'L2 norm of error on Hn = ', norm_err(1)
201 WRITE(rank+10,*)
'L2 norm of error on Curl(Hn) = ', norm_err(2)
202 WRITE(rank+10,*)
'L2 norm of Div(mu Hn) = ', norm_err(3)
203 IF (
inputs%nb_dom_phi/=0)
THEN 204 WRITE(10,*)
'Scal potential #####################' 205 WRITE(10,*)
'H1 norm of error on phin = ', norm_err(4)
210 norm_err(1) =
norm_sf(comm_one_d_ns,
'sH1', vv_mesh, list_mode, un)
211 norm_err(2) =
norm_sf(comm_one_d,
'L2', h_mesh, list_mode, hn)
212 norm_err(3) =
norm_sf(comm_one_d_ns,
'L2', pp_mesh, list_mode, pn)
213 norm_err(4) =
norm_sf(comm_one_d_temp,
'L2', temp_mesh, list_mode, tempn)
215 WRITE(10,*)
'######################################' 216 WRITE(10,*)
'H1 norm on velocity = ', norm_err(1)
217 WRITE(10,*)
'L2 norm of Hn = ', norm_err(2)
218 WRITE(10,*)
'L2 norm of pressure = ', norm_err(3)
219 WRITE(10,*)
'L2 norm of temperature = ', norm_err(4)
220 WRITE(10,*)
'######################################' 224 norm_err(1) =
norm_sf(comm_one_d_ns,
'sH1', vv_mesh, list_mode, un)
225 norm_err(2) =
norm_sf(comm_one_d,
'div', h_mesh, list_mode, hn)
226 norm_err(3) =
norm_sf(comm_one_d,
'L2', h_mesh, list_mode, hn)
227 norm_err(4) =
norm_sf(comm_one_d_ns,
'L2', pp_mesh, list_mode, pn)
229 WRITE(10,*)
'######################################' 230 WRITE(10,*)
'H1 norm on velocity = ', norm_err(1)
231 WRITE(10,*)
'L2 norm of div(Hn) = ', norm_err(2)
232 WRITE(10,*)
'L2 norm of Hn = ', norm_err(3)
233 WRITE(10,*)
'L2 norm of pressure = ', norm_err(4)
234 WRITE(10,*)
'######################################' 239 READ(10,*) norm_err(1)
240 READ(10,*) norm_err(2)
241 READ(11,*) norm_err(3)
242 READ(11,*) norm_err(4)
250 vv_mesh, list_mode(i:i), un(:,:,i:i)))**2
252 norm_err_loc(4)=
norm_sf(comm_one_d_ns,
'div', vv_mesh, list_mode, un)/&
253 norm_sf(comm_one_d_ns,
'sH1', vv_mesh, list_mode, un)
254 CALL mpi_allreduce(norm_err_loc,norm_err,4,mpi_double_precision, &
255 mpi_max, comm_one_d(2), code)
258 WRITE(10,*)
'######################################' 259 WRITE(10,*)
'L2 norm of mode 0 = ', norm_err(1)
260 WRITE(10,*)
'L2 norm of mode 1 = ', norm_err(2)
261 WRITE(10,*)
'L2 norm of mode 2 = ', norm_err(3)
262 WRITE(10,*)
'Relative L2 norm of div.= ', norm_err(4)
263 WRITE(10,*)
'######################################' 267 norm_err(1) = 0.5*
norm_sf(comm_one_d,
'L2', vv_mesh, list_mode, un)**2
270 WRITE(10,*)
'######################################' 271 WRITE(10,*)
'Total kinetic energy = ', norm_err(1)
272 WRITE(10,*)
'Mx = ', norm_err(2)
273 WRITE(10,*)
'My = ', norm_err(3)
274 WRITE(10,*)
'Mz = ', norm_err(4)
275 WRITE(10,*)
'######################################' 279 norm =
norm_sf(comm_one_d,
'L2', h_mesh, list_mode, bn)
280 err =
norm_sf(comm_one_d,
'div', h_mesh, list_mode, bn)
281 norm_err(1) = err/norm
284 hn1(:,k,i) = hexact(h_mesh, k, h_mesh%rr, list_mode(i), mu_h_field, time)
285 hn1(:,k,i) = hn1(:,k,i) - hn(:,k,i)
288 err =
norm_sf(comm_one_d,
'curl', h_mesh, list_mode, hn1)
289 norm =
norm_sf(comm_one_d,
'L2', h_mesh, list_mode, hn)
290 norm_err(2) = err/norm
291 err =
norm_sf(comm_one_d,
'L2', h_mesh, list_mode, hn1)
292 norm_err(3) = err/norm
295 phin1(:,k,i) = phin(:,k,i) - phiexact(k, phi_mesh%rr, list_mode(i),
inputs%mu_phi, time)
298 err =
norm_sf(comm_one_d,
'L2', phi_mesh, list_mode, phin1)
299 norm =
norm_sf(comm_one_d,
'L2', phi_mesh, list_mode, phin)
300 norm_err(4) = err/norm
302 WRITE(10,*)
'########################################################' 303 WRITE(10,*)
' L2-norm on div of B err/norm =', norm_err(1)
304 WRITE(10,*)
' L2-norm on curl of (H-Hexact) err/norm =', norm_err(2)
305 WRITE(10,*)
' L2-norm of (H-Hexact) err/norm =', norm_err(3)
306 WRITE(10,*)
' L2-norm on phi err/norm =', norm_err(4)
307 WRITE(10,*)
'########################################################' 311 norm =
norm_sf(comm_one_d,
'L2', h_mesh, list_mode, bn)
312 err =
norm_sf(comm_one_d,
'div', h_mesh, list_mode, bn)
313 norm_err(1) = err/norm
316 hn1(:,k,i) = hexact(h_mesh, k, h_mesh%rr, list_mode(i), mu_h_field, time)
317 hn1(:,k,i) = hn1(:,k,i) - hn(:,k,i)
320 err =
norm_sf(comm_one_d,
'curl', h_mesh, list_mode, hn1)
321 norm =
norm_sf(comm_one_d,
'L2', h_mesh, list_mode, hn)
322 norm_err(2) = err/norm
323 err =
norm_sf(comm_one_d,
'L2', h_mesh, list_mode, hn1)
324 norm_err(3) = err/norm
327 WRITE(10,*)
'########################################################' 328 WRITE(10,*)
' L2-norm on div of B err/norm =', norm_err(1)
329 WRITE(10,*)
' L2-norm on curl of (H-Hexact) err/norm =', norm_err(2)
330 WRITE(10,*)
' L2-norm of (H-Hexact) err/norm =', norm_err(3)
331 WRITE(10,*)
' L2-norm of H =', norm_err(4)
332 WRITE(10,*)
'########################################################' 338 un_m1(:,k,i) = un(:,k,i) - vv_exact(k,vv_mesh%rr,list_mode(i),time)
339 hn1(:,k,i) = hn(:,k,i) - hexact(h_mesh, k, h_mesh%rr, list_mode(i), mu_h_field, time)
342 pn_m1(:,k,i) = pn(:,k,i) - pp_exact(k,pp_mesh%rr,list_mode(i),time)
343 DO int_nb = 1,
inputs%nb_fluid - 1
344 level_setn_m1(int_nb,:,k,i) = level_setn(int_nb,:,k,i) &
345 - level_set_exact(int_nb,k,pp_mesh%rr,list_mode(i),time)
348 IF (list_mode(i) == 0)
THEN 349 CALL moy(comm_one_d(1),pp_mesh, pn_m1(:,1,i),moyenne)
350 pn_m1(:,1,i) = pn_m1(:,1,i) - moyenne
353 norm_err(1) =
norm_sf(comm_one_d_ns,
'L2', vv_mesh, list_mode, un_m1)
354 norm_err(2) =
norm_sf(comm_one_d_ns,
'L2', pp_mesh, list_mode, pn_m1)
355 norm_err(3) =
norm_sf(comm_one_d_ns,
'L2', pp_mesh, list_mode, level_setn_m1(1,:,:,:))
356 err =
norm_sf(comm_one_d,
'L2', h_mesh, list_mode, hn1)
359 WRITE(10,*)
'Velocity field #####################' 360 WRITE(10,*)
'L2 error on velocity = ', norm_err(1)
361 WRITE(10,*)
'Pressure field #####################' 362 WRITE(10,*)
'L2 error on pressure = ', norm_err(2)
363 WRITE(10,*)
'Level Set #####################' 364 WRITE(10,*)
'L2 error on level set = ', norm_err(3)
365 WRITE(10,*)
'Magnetic field #####################' 366 WRITE(10,*)
'L2 error on Hn = ', norm_err(4)
371 err =
norm_sf(comm_one_d,
'div', vv_mesh, list_mode, un)
372 norm =
norm_sf(comm_one_d,
'H1', vv_mesh, list_mode, un)
374 norm_err(2) = err/norm
375 norm =
norm_sf(comm_one_d,
'L2', vv_mesh, list_mode, un)
377 norm =
norm_sf(comm_one_d,
'H1', pp_mesh, list_mode, pn)
381 WRITE(10,*)
'########################################################' 382 WRITE(10,*)
' L2-norm on div of u =', norm_err(1)
383 WRITE(10,*)
' L2-norm of div of u err/norm =', norm_err(2)
384 WRITE(10,*)
' L2-norm of u =', norm_err(3)
385 WRITE(10,*)
' H1-norm of p =', norm_err(4)
386 WRITE(10,*)
'########################################################' 391 err =
norm_sf(comm_one_d,
'div', vv_mesh, list_mode, un)
392 norm =
norm_sf(comm_one_d,
'H1', vv_mesh, list_mode, un)
393 norm_err(1) = err/norm
394 norm =
norm_sf(comm_one_d,
'L2', h_mesh, list_mode, bn)
395 err =
norm_sf(comm_one_d,
'div', h_mesh, list_mode, bn)
396 norm_err(2) = err/norm
399 norm_err(4) = 0.5*err
401 WRITE(10,*)
'########################################################' 402 WRITE(10,*)
' L2-norm of div of u err/norm =', norm_err(1)
403 WRITE(10,*)
' L2-norm on div of B err/norm =', norm_err(2)
404 WRITE(10,*)
' L2-norm of of B =', norm_err(3)
405 WRITE(10,*)
' integral of 0.5*B.H =', norm_err(4)
406 WRITE(10,*)
'########################################################' 412 DO i=1,
size(list_mode)
413 un_ex(:,
TYPE,i) = vv_exact(
TYPE,vv_mesh%rr,list_mode(i),time)
416 un_error = un - un_ex
417 norm_err(1) =
norm_sf(comm_one_d,
'L2', vv_mesh, list_mode, un_error) /
norm_sf(comm_one_d,
'L2', vv_mesh, list_mode, un_ex)
419 DO i=1,
size(list_mode)
420 pn_ex(:,
TYPE,i) = pp_exact(
TYPE,pp_mesh%rr,list_mode(i),time)
423 pn_error = pn - pn_ex
424 norm_err(2) =
norm_sf(comm_one_d,
'L2', pp_mesh, list_mode, pn_error)
426 DO i=1,
size(list_mode)
427 tempn_ex(:,
TYPE,i) = temperature_exact(
TYPE,temp_mesh%rr,list_mode(i),time)
430 tempn_error = tempn - tempn_ex
431 norm_err(3) =
norm_sf(comm_one_d_temp,
'L2', temp_mesh, list_mode, tempn_error) / &
432 norm_sf(comm_one_d_temp,
'L2', temp_mesh, list_mode, tempn_ex)
433 norm_err(4) =
norm_sf(comm_one_d_temp,
'H1', temp_mesh, list_mode, tempn_error) / &
434 norm_sf(comm_one_d_temp,
'H1', temp_mesh, list_mode, tempn_ex)
436 WRITE(10,*)
'########################################################' 437 WRITE(10,*)
' L2-norm of error on u / L2-norm of u exact =', norm_err(1)
438 WRITE(10,*)
' L2-norm of error on p =', norm_err(2)
439 WRITE(10,*)
' L2-norm of error on T / L2-norm of T exact =', norm_err(3)
440 WRITE(10,*)
' H1-norm of error on T / H1-norm of T exact =', norm_err(4)
441 WRITE(10,*)
'########################################################' 447 DO i=1,
size(list_mode)
448 un_ex(:,
TYPE,i) = vv_exact(
TYPE,vv_mesh%rr,list_mode(i),time)
451 un_error = un - un_ex
452 norm_err(1) =
norm_sf(comm_one_d,
'L2', vv_mesh, list_mode, un_error) /
norm_sf(comm_one_d,
'L2', vv_mesh, list_mode, un_ex)
454 DO i=1,
size(list_mode)
455 pn_ex(:,
TYPE,i) = pp_exact(
TYPE,pp_mesh%rr,list_mode(i),time)
458 pn_error = pn - pn_ex
459 norm_err(2) =
norm_sf(comm_one_d,
'L2', pp_mesh, list_mode, pn_error) /
norm_sf(comm_one_d,
'L2', pp_mesh, list_mode, pn_ex)
461 DO i=1,
size(list_mode)
462 tempn_ex(:,
TYPE,i) = temperature_exact(
TYPE,temp_mesh%rr,list_mode(i),time)
465 tempn_error = tempn - tempn_ex
466 norm_err(3) =
norm_sf(comm_one_d_temp,
'L2', temp_mesh, list_mode, tempn_error) / &
467 norm_sf(comm_one_d_temp,
'L2', temp_mesh, list_mode, tempn_ex)
468 norm_err(4) =
norm_sf(comm_one_d_temp,
'H1', temp_mesh, list_mode, tempn_error) / &
469 norm_sf(comm_one_d_temp,
'H1', temp_mesh, list_mode, tempn_ex)
471 WRITE(10,*)
'########################################################' 472 WRITE(10,*)
' L2-norm of error on u / L2-norm of u exact =', norm_err(1)
473 WRITE(10,*)
' L2-norm of error on p / L2-norm of p exact =', norm_err(2)
474 WRITE(10,*)
' L2-norm of error on T / L2-norm of T exact =', norm_err(3)
475 WRITE(10,*)
' H1-norm of error on T / H1-norm of T exact =', norm_err(4)
476 WRITE(10,*)
'########################################################' 482 DO i=1,
size(list_mode)
483 un_ex(:,
TYPE,i) = vv_exact(
TYPE,vv_mesh%rr,list_mode(i),time)
486 un_error = un - un_ex
487 norm_err(1) =
norm_sf(comm_one_d,
'L2', vv_mesh, list_mode, un_error) /
norm_sf(comm_one_d,
'L2', vv_mesh, list_mode, un_ex)
489 DO i=1,
size(list_mode)
490 pn_ex(:,
TYPE,i) = pp_exact(
TYPE,pp_mesh%rr,list_mode(i),time)
493 pn_error = pn - pn_ex
494 norm_err(2) =
norm_sf(comm_one_d,
'L2', pp_mesh, list_mode, pn_error)
496 DO i=1,
size(list_mode)
497 tempn_ex(:,
TYPE,i) = temperature_exact(
TYPE,temp_mesh%rr,list_mode(i),time)
500 tempn_error = tempn - tempn_ex
501 norm_err(3) =
norm_sf(comm_one_d_temp,
'L2', temp_mesh, list_mode, tempn_error) / &
502 norm_sf(comm_one_d_temp,
'L2', temp_mesh, list_mode, tempn_ex)
504 DO i=1,
size(list_mode)
505 hn_ex(:,
TYPE,i) = hexact(h_mesh,
TYPE,h_mesh%rr,list_mode(i),mu_h_field,time)
508 hn_error = hn - hn_ex
509 norm_err(4) =
norm_sf(comm_one_d,
'L2', h_mesh, list_mode, hn_error) /
norm_sf(comm_one_d,
'L2', h_mesh, list_mode, hn_ex)
511 WRITE(10,*)
'########################################################' 512 WRITE(10,*)
' L2-norm of error on u / L2-norm of u exact =', norm_err(1)
513 WRITE(10,*)
' L2-norm of error on p =', norm_err(2)
514 WRITE(10,*)
' L2-norm of error on T / L2-norm of T exact =', norm_err(3)
515 WRITE(10,*)
' L2-norm of error on H / L2-norm of H exact =', norm_err(4)
516 WRITE(10,*)
'########################################################' 522 DO i=1,
size(list_mode)
523 un_ex(:,
TYPE,i) = vv_exact(
TYPE,vv_mesh%rr,list_mode(i),time)
526 un_error = un - un_ex
527 norm_err(1) =
norm_sf(comm_one_d,
'L2', vv_mesh, list_mode, un_error) /
norm_sf(comm_one_d,
'L2', vv_mesh, list_mode, un_ex)
529 DO i=1,
size(list_mode)
530 pn_ex(:,
TYPE,i) = pp_exact(
TYPE,pp_mesh%rr,list_mode(i),time)
533 pn_error = pn - pn_ex
534 norm_err(2) =
norm_sf(comm_one_d,
'L2', pp_mesh, list_mode, pn_error) /
norm_sf(comm_one_d,
'L2', pp_mesh, list_mode, pn_ex)
536 DO i=1,
size(list_mode)
537 tempn_ex(:,
TYPE,i) = temperature_exact(
TYPE,temp_mesh%rr,list_mode(i),time)
540 tempn_error = tempn - tempn_ex
541 norm_err(3) =
norm_sf(comm_one_d_temp,
'L2', temp_mesh, list_mode, tempn_error) / &
542 norm_sf(comm_one_d_temp,
'L2', temp_mesh, list_mode, tempn_ex)
544 DO i=1,
size(list_mode)
545 hn_ex(:,
TYPE,i) = hexact(h_mesh,
TYPE,h_mesh%rr,list_mode(i),mu_h_field,time)
548 hn_error = hn - hn_ex
549 norm_err(4) =
norm_sf(comm_one_d,
'L2', h_mesh, list_mode, hn_error) /
norm_sf(comm_one_d,
'L2', h_mesh, list_mode, hn_ex)
551 WRITE(10,*)
'########################################################' 552 WRITE(10,*)
' L2-norm of error on u / L2-norm of u exact =', norm_err(1)
553 WRITE(10,*)
' L2-norm of error on p / L2-norm of p exact =', norm_err(2)
554 WRITE(10,*)
' L2-norm of error on T / L2-norm of T exact =', norm_err(3)
555 WRITE(10,*)
' L2-norm of error on H / L2-norm of H exact =', norm_err(4)
556 WRITE(10,*)
'########################################################' 562 DO i=1,
size(list_mode)
563 un_ex(:,
TYPE,i) = vv_exact(
TYPE,vv_mesh%rr,list_mode(i),time)
566 un_error = un - un_ex
567 norm_err(1) =
norm_sf(comm_one_d,
'L2', vv_mesh, list_mode, un_error)
569 DO i=1,
size(list_mode)
570 pn_ex(:,
TYPE,i) = pp_exact(
TYPE,pp_mesh%rr,list_mode(i),time)
573 pn_error = pn - pn_ex
574 norm_err(2) =
norm_sf(comm_one_d,
'L2', pp_mesh, list_mode, pn_error)
576 DO i=1,
size(list_mode)
577 tempn_ex(:,
TYPE,i) = temperature_exact(
TYPE,temp_mesh%rr,list_mode(i),time)
580 tempn_error = tempn - tempn_ex
581 norm_err(3) =
norm_sf(comm_one_d_temp,
'L2', temp_mesh, list_mode, tempn_error) / &
582 norm_sf(comm_one_d_temp,
'L2', temp_mesh, list_mode, tempn_ex)
583 norm_err(4) =
norm_sf(comm_one_d_temp,
'H1', temp_mesh, list_mode, tempn_error) / &
584 norm_sf(comm_one_d_temp,
'H1', temp_mesh, list_mode, tempn_ex)
586 WRITE(10,*)
'########################################################' 587 WRITE(10,*)
' L2-norm of error on u =', norm_err(1)
588 WRITE(10,*)
' L2-norm of error on p =', norm_err(2)
589 WRITE(10,*)
' L2-norm of error on T / L2-norm of T exact =', norm_err(3)
590 WRITE(10,*)
' H1-norm of error on T / H1-norm of T exact =', norm_err(4)
591 WRITE(10,*)
'########################################################' 597 DO i=1,
size(list_mode)
598 un_ex(:,
TYPE,i) = vv_exact(
TYPE,vv_mesh%rr,list_mode(i),time)
601 un_error = un - un_ex
602 norm_err(1) =
norm_sf(comm_one_d,
'L2', vv_mesh, list_mode, un_error) /
norm_sf(comm_one_d,
'L2', vv_mesh, list_mode, un_ex)
604 DO i=1,
size(list_mode)
605 un_ex(:,
TYPE,i) = vv_exact(
TYPE,vv_mesh%rr,list_mode(i),time)
608 un_error = un - un_ex
609 norm_err(2) =
norm_sf(comm_one_d,
'H1', vv_mesh, list_mode, un_error) /
norm_sf(comm_one_d,
'H1', vv_mesh, list_mode, un_ex)
611 DO i=1,
size(list_mode)
612 pn_ex(:,
TYPE,i) = pp_exact(
TYPE,pp_mesh%rr,list_mode(i),time)
615 pn_error = pn - pn_ex
616 norm_err(3) =
norm_sf(comm_one_d,
'L2', pp_mesh, list_mode, pn_error)
618 DO i=1,
size(list_mode)
619 tempn_ex(:,
TYPE,i) = temperature_exact(
TYPE,temp_mesh%rr,list_mode(i),time)
622 tempn_error = tempn - tempn_ex
623 norm_err(4) =
norm_sf(comm_one_d_temp,
'L2', temp_mesh, list_mode, tempn_error) / &
624 norm_sf(comm_one_d_temp,
'L2', temp_mesh, list_mode, tempn_ex)
626 WRITE(10,*)
'########################################################' 627 WRITE(10,*)
' L2-norm of error on u / L2-norm of u exact =', norm_err(1)
628 WRITE(10,*)
' H1-norm of error on u / H1-norm of u exact =', norm_err(2)
629 WRITE(10,*)
' L2-norm of error on p =', norm_err(3)
630 WRITE(10,*)
' L2-norm of error on T / L2-norm of T exact =', norm_err(4)
631 WRITE(10,*)
'########################################################' 635 CALL error_petsc(
' BUG in post_proc_test: We should not be here')
642 IF (maxval(abs(
inputs%norm_ref-norm_err))<1.d-8)
THEN 643 WRITE(57,
'(A,I2,A)')
'test #',
inputs%numero_du_test_debug,
' OK' 647 WRITE(57,
'(A,I2,2x,e15.7)')
'Problem with test #',
inputs%numero_du_test_debug, &
648 maxval(abs(
inputs%norm_ref-norm_err))
subroutine error_petsc(string)
subroutine, public post_proc_test(vv_mesh, pp_mesh, temp_mesh, H_mesh, phi_mesh, list_mode, un, pn, Hn, Bn, phin, tempn, level_setn, mu_H_field, time, m_max_c, comm_one_d, comm_one_d_ns, comm_one_d_temp)
subroutine angular_momentum(mesh, list_mode, field, moments_out)
real(kind=8) function norme_l2_champ_par(communicator, mesh, list_mode, v)
real(kind=8) function norm_sf(communicator, norm_type, mesh, list_mode, v)
subroutine, public moy(communicator, mesh, p, RESLT)
real(kind=8) function dot_product_sf(communicator, mesh, list_mode, v, w)
real(kind=8) function norm_s_l1_zero_mode(communicator, mesh, list_mode, v)