Changeset 2963 for LMDZ5/trunk
- Timestamp:
- Jul 24, 2017, 3:56:41 PM (7 years ago)
- Location:
- LMDZ5/trunk/libf
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/dynphy_lonlat/inigeomphy_mod.F90
r2786 r2963 93 93 94 94 DO i=1,iim 95 boundslon_reg(i, east)=rlonu(i)96 boundslon_reg(i, west)=rlonu(i+1)95 boundslon_reg(i,west)=rlonu(i) 96 boundslon_reg(i,east)=rlonu(i+1) 97 97 ENDDO 98 98 -
LMDZ5/trunk/libf/phy_common/regular_lonlat_mod.F90
r2346 r2963 8 8 INTEGER, PARAMETER :: south_west=3 ! boundaries of regular lontlat 9 9 INTEGER, PARAMETER :: south_east=4 ! boundaries of regular lontlat 10 INTEGER, PARAMETER :: east= 1! boundaries of regular lontlat11 INTEGER, PARAMETER :: west= 2! boundaries of regular lontlat10 INTEGER, PARAMETER :: east=2 ! boundaries of regular lontlat 11 INTEGER, PARAMETER :: west=1 ! boundaries of regular lontlat 12 12 INTEGER, PARAMETER :: north=1 ! boundaries of regular lontlat 13 13 INTEGER, PARAMETER :: south=2 ! boundaries of regular lontlat -
LMDZ5/trunk/libf/phylmd/regr_horiz_time_climoz_m.F90
r2788 r2963 179 179 IF(l3D) THEN 180 180 !--- Compute input edges longitudes vector (no end point yet) 181 ALLOCATE(v1(nlon_in ))181 ALLOCATE(v1(nlon_in+1)) 182 182 v1(1)=(lon_in(nlon_in)+lon_in(1))/2.-pi 183 183 FORALL(i=2:nlon_in) v1(i)=(lon_in(i-1)+lon_in(i))/2. 184 v1(nlon_in+1)=v1(1)+2.*pi 184 185 DEALLOCATE(lon_in) 185 186 186 !--- Shift input longitudes vector until it contains first output point boundslon_reg(1, east)187 v1=v1+2*pi*REAL(FLOOR((boundslon_reg(1, east)-v1(1))/(2.*pi)))188 189 !--- Ensure first input longitudes interval contains first output point boundslon_reg(1, east)190 dx1=locate(v1,boundslon_reg(1, east))-1187 !--- Shift input longitudes vector until it contains first output point boundslon_reg(1,west) 188 v1=v1+2*pi*REAL(FLOOR((boundslon_reg(1,west)-v1(1))/(2.*pi))) 189 190 !--- Ensure first input longitudes interval contains first output point boundslon_reg(1,west) 191 dx1=locate(v1,boundslon_reg(1,west))-1 191 192 v1=CSHIFT(v1,SHIFT=dx1,DIM=1); v1(nlon_in-dx1+1:)=v1(nlon_in-dx1+1:)+2.*pi 192 193 193 !--- Extend input longitudes vector until last interval contains boundslon_reg(nlat_ou, west)194 dx2=0; DO WHILE(v1(1+dx2)+2.*pi<boundslon_reg(nl at_ou,west)); dx2=dx2+1; END DO194 !--- Extend input longitudes vector until last interval contains boundslon_reg(nlat_ou,east) 195 dx2=0; DO WHILE(v1(1+dx2)+2.*pi<boundslon_reg(nlon_ou,east)); dx2=dx2+1; END DO 195 196 196 197 !--- Final edges longitudes vector (with margin and end point) 197 ALLOCATE(lon_in_edge(nlon_in+dx2+1)); lon_in_edge=[v1,v1( 1:1+dx2)+2.*pi]198 ALLOCATE(lon_in_edge(nlon_in+dx2+1)); lon_in_edge=[v1,v1(2:1+dx2)+2.*pi] 198 199 DEALLOCATE(v1) 199 200 END IF … … 330 331 ALLOCATE(o3_regr_lon(nlon_ou, nlat_in, nlev_in, ie-ib+1, read_climoz)) 331 332 CALL regr_conserv(1, o3_in3, xs = lon_in_edge, & 332 xt = [boundslon_reg(1, east),boundslon_reg(:,west)], &333 xt = [boundslon_reg(1,west),boundslon_reg(:,east)], & 333 334 vt = o3_regr_lon, slope = slopes(1,o3_in3, lon_in_edge)) 334 335 DEALLOCATE(o3_in3)
Note: See TracChangeset
for help on using the changeset viewer.