1 |
|
|
! |
2 |
|
|
! $Id: gr_fi_dyn_p.F 2239 2015-03-23 07:27:30Z emillour $ |
3 |
|
|
! |
4 |
|
|
SUBROUTINE gr_fi_dyn_p(nfield,ngrid,im,jm,pfi,pdyn) |
5 |
|
|
#ifdef CPP_PARA |
6 |
|
|
! Interface with parallel physics, |
7 |
|
|
USE mod_interface_dyn_phys |
8 |
|
|
USE dimphy |
9 |
|
|
USE parallel_lmdz |
10 |
|
|
IMPLICIT NONE |
11 |
|
|
c======================================================================= |
12 |
|
|
c passage d'un champ de la grille scalaire a la grille physique |
13 |
|
|
c======================================================================= |
14 |
|
|
|
15 |
|
|
c----------------------------------------------------------------------- |
16 |
|
|
c declarations: |
17 |
|
|
c ------------- |
18 |
|
|
|
19 |
|
|
INTEGER im,jm,ngrid,nfield |
20 |
|
|
REAL pdyn(im,jm,nfield) |
21 |
|
|
REAL pfi(ngrid,nfield) |
22 |
|
|
|
23 |
|
|
INTEGER i,j,ifield,ig |
24 |
|
|
|
25 |
|
|
c----------------------------------------------------------------------- |
26 |
|
|
c calcul: |
27 |
|
|
c ------- |
28 |
|
|
c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) |
29 |
|
|
DO ifield=1,nfield |
30 |
|
|
|
31 |
|
|
do ig=1,klon |
32 |
|
|
i=index_i(ig) |
33 |
|
|
j=index_j(ig) |
34 |
|
|
pdyn(i,j,ifield)=pfi(ig,ifield) |
35 |
|
|
if (i==1) pdyn(im,j,ifield)=pdyn(i,j,ifield) |
36 |
|
|
enddo |
37 |
|
|
|
38 |
|
|
c traitement des poles |
39 |
|
|
if (pole_nord) then |
40 |
|
|
do i=1,im |
41 |
|
|
pdyn(i,1,ifield)=pdyn(1,1,ifield) |
42 |
|
|
enddo |
43 |
|
|
endif |
44 |
|
|
|
45 |
|
|
if (pole_sud) then |
46 |
|
|
do i=1,im |
47 |
|
|
pdyn(i,jm,ifield)=pdyn(1,jm,ifield) |
48 |
|
|
enddo |
49 |
|
|
endif |
50 |
|
|
|
51 |
|
|
ENDDO |
52 |
|
|
c$OMP END DO NOWAIT |
53 |
|
|
#endif |
54 |
|
|
! of #ifdef CPP_PARA |
55 |
|
|
RETURN |
56 |
|
|
END |