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

Last change on this file since 186 was 186, checked in by ymipsl, 10 years ago

Add new openMP parallelism based on distribution of domains on threads. There is no more limitation of number of threads by MPI process.

YM

File size: 1.0 KB
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      IF (.NOT. assigned_domain(ind)) CYCLE
17      CALL swap_dimensions(ind)
18      CALL swap_geometry(ind)
19      ps=f_ps(ind)
20      p=f_p(ind)
21      CALL compute_pression(ps, p,0)
22    ENDDO
23 
24  END SUBROUTINE pression
25 
26  SUBROUTINE compute_pression(ps,p,offset)
27  USE icosa
28  USE disvert_mod
29  IMPLICIT NONE
30    REAL(rstd),INTENT(IN) :: ps(iim*jjm)
31    REAL(rstd),INTENT(OUT) :: p(iim*jjm,llm+1)
32    INTEGER,INTENT(IN) :: offset
33    INTEGER :: i,j,ij,l
34
35    IF(ap_bp_present) THEN
36    DO    l    = 1, llm+1
37      DO j=jj_begin-offset,jj_end+offset
38        DO i=ii_begin-offset,ii_end+offset
39          ij=(j-1)*iim+i
40          p(ij,l) = ap(l) + bp(l) * ps(ij)
41        ENDDO
42      ENDDO
43    ENDDO
44    END IF
45  END SUBROUTINE compute_pression
46
47END MODULE pression_mod
Note: See TracBrowser for help on using the repository browser.