MODULE pression_mod CONTAINS SUBROUTINE pression(f_ps,f_p) USE icosa IMPLICIT NONE TYPE(t_field), POINTER :: f_ps(:) TYPE(t_field), POINTER :: f_p(:) REAL(rstd), POINTER :: ps(:) REAL(rstd), POINTER :: p(:,:) INTEGER :: ind DO ind=1,ndomain CALL swap_dimensions(ind) CALL swap_geometry(ind) ps=f_ps(ind) p=f_p(ind) CALL compute_pression(ps, p,0) ENDDO END SUBROUTINE pression SUBROUTINE compute_pression(ps,p,offset) USE icosa USE disvert_mod IMPLICIT NONE REAL(rstd),INTENT(IN) :: ps(iim*jjm) REAL(rstd),INTENT(OUT) :: p(iim*jjm,llm+1) INTEGER,INTENT(IN) :: offset INTEGER :: i,j,ij,l DO l = 1, llm+1 !$OMP DO DO j=jj_begin-offset,jj_end+offset DO i=ii_begin-offset,ii_end+offset ij=(j-1)*iim+i p(ij,l) = ap(l) + bp(l) * ps(ij) ENDDO ENDDO ENDDO END SUBROUTINE compute_pression END MODULE pression_mod