Changeset 295 for codes/icosagcm/trunk/src/vertical_interp.f90
- Timestamp:
- 10/31/14 14:52:01 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/trunk/src/vertical_interp.f90
r186 r295 21 21 USE icosa 22 22 USE pression_mod 23 USE omp_para 23 24 IMPLICIT NONE 24 25 TYPE(t_field),POINTER :: f_ps(:) … … 48 49 49 50 SUBROUTINE compute_vertical_interp(p,in,out,pval) 51 USE omp_para 50 52 IMPLICIT NONE 51 53 REAL(rstd),INTENT(IN) :: p(iim*jjm,llm+1) … … 56 58 INTEGER :: i,j,ij,l 57 59 58 DO j=jj_begin-1,jj_end+1 59 DO i=ii_begin-1,ii_end+1 60 ij=(j-1)*iim+i 61 l=llm-1 62 DO WHILE(0.5*(p(ij,l)+p(ij,l+1))<pval .AND. l>1) 63 l=l-1 60 !$OMP BARRIER 61 IF (is_omp_level_master) THEN 62 63 DO j=jj_begin-1,jj_end+1 64 DO i=ii_begin-1,ii_end+1 65 ij=(j-1)*iim+i 66 l=llm-1 67 DO WHILE(0.5*(p(ij,l)+p(ij,l+1))<pval .AND. l>1) 68 l=l-1 69 ENDDO 70 pmid=0.5*(p(ij,l)+p(ij,l+1)) 71 pmidp1=0.5*(p(ij,l+1)+p(ij,l+2)) 72 73 coeff=(pval-pmid)/(pmid-pmidp1) 74 75 out(ij)=in(ij,l)+coeff*(in(ij,l)-in(ij,l+1)) 64 76 ENDDO 65 pmid=0.5*(p(ij,l)+p(ij,l+1))66 pmidp1=0.5*(p(ij,l+1)+p(ij,l+2))67 68 coeff=(pval-pmid)/(pmid-pmidp1)69 70 out(ij)=in(ij,l)+coeff*(in(ij,l)-in(ij,l+1))71 77 ENDDO 72 ENDDO 78 79 ENDIF 80 !$OMP BARRIER 73 81 74 82 END SUBROUTINE compute_vertical_interp
Note: See TracChangeset
for help on using the changeset viewer.