--- trunk/dyn3d/coordij.f 2013/11/15 18:45:49 76 +++ trunk/dyn3d/Guide/coordij.f 2015/03/20 16:31:06 132 @@ -1,49 +1,34 @@ -! -! $Header: /home/cvsroot/LMDZ4/libf/dyn3d/coordij.F,v 1.1.1.1 2004/05/19 12:53:05 lmdzadmin Exp $ -! - SUBROUTINE coordij(lon,lat,ilon,jlat) - -c======================================================================= -c -c calcul des coordonnees i et j de la maille scalaire dans -c laquelle se trouve le point (lon,lat) en radian -c -c======================================================================= - - use dimens_m - use paramet_m - use comconst - use comgeom - use serre - use nr_util, only: pi - IMPLICIT NONE - REAL lon,lat - INTEGER ilon,jlat - INTEGER i,j - - - real zlon,zlat - - zlon=lon*pi/180. - zlat=lat*pi/180. - - DO i=1,iim+1 - IF (rlonu(i).GT.zlon) THEN - ilon=i - GOTO 10 - ENDIF - ENDDO -10 CONTINUE - - j=0 - DO j=1,jjm - IF(rlatv(j).LT.zlat) THEN - jlat=j - GOTO 20 - ENDIF - ENDDO -20 CONTINUE - IF(j.EQ.0) j=jjm+1 +module coordij_m - RETURN - END + IMPLICIT NONE + +contains + + SUBROUTINE coordij(lon, lat, ilon, jlat) + + ! From LMDZ4/libf/dyn3d/coordij.F, version 1.1.1.1 2004/05/19 12:53:05 + + ! Calcul des coordonnées ilon et jlat de la maille scalaire dans + ! laquelle se trouve le point (lon, lat). + + USE comgeom, only: rlonu, rlatv + USE dimens_m, only: iim, jjm + + REAL, intent(in):: lon, lat ! in rad + INTEGER, intent(out):: ilon, jlat + + !---------------------------------------------------------- + + ilon = 1 + do while (ilon <= iim .and. rlonu(ilon) <= lon) + ilon = ilon + 1 + end do + + jlat = 1 + do while (jlat <= jjm - 1 .and. rlatv(jlat) >= lat) + jlat = jlat + 1 + end do + + END SUBROUTINE coordij + +end module coordij_m