source: codes/icosagcm/trunk/src/pression.f90 @ 78

Last change on this file since 78 was 19, checked in by ymipsl, 12 years ago

Simplify the management of the module.

YM

File size: 976 bytes
Line 
1MODULE pression_mod
2
3CONTAINS
4
5  SUBROUTINE pression(f_ps,f_p)
6  USE icosa
7  IMPLICIT NONE
8    TYPE(t_field), POINTER :: f_ps(:)
9    TYPE(t_field), POINTER :: f_p(:)
10 
11    REAL(rstd), POINTER :: ps(:)
12    REAL(rstd), POINTER :: p(:,:)
13    INTEGER :: ind
14
15    DO ind=1,ndomain
16      CALL swap_dimensions(ind)
17      CALL swap_geometry(ind)
18      ps=f_ps(ind)
19      p=f_p(ind)
20      CALL compute_pression(ps, p,0)
21    ENDDO
22 
23  END SUBROUTINE pression
24 
25  SUBROUTINE compute_pression(ps,p,offset)
26  USE icosa
27  USE disvert_mod
28  IMPLICIT NONE
29    REAL(rstd),INTENT(IN) :: ps(iim*jjm)
30    REAL(rstd),INTENT(OUT) :: p(iim*jjm,llm+1)
31    INTEGER,INTENT(IN) :: offset
32    INTEGER :: i,j,ij,l
33
34    DO    l    = 1, llm+1
35!$OMP DO
36      DO j=jj_begin-offset,jj_end+offset
37        DO i=ii_begin-offset,ii_end+offset
38          ij=(j-1)*iim+i
39          p(ij,l) = ap(l) + bp(l) * ps(ij)
40        ENDDO
41      ENDDO
42    ENDDO
43   
44  END SUBROUTINE compute_pression
45
46END MODULE pression_mod
Note: See TracBrowser for help on using the repository browser.