Skip to content
Snippets Groups Projects
Commit a3dfbc1f authored by Gaelle DELAUTIER's avatar Gaelle DELAUTIER
Browse files

Gaelle 20/07/2018 : bug surfex 8.1

parent ef09c38a
No related branches found
No related tags found
No related merge requests found
......@@ -86,7 +86,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZFIELD
REAL :: ZLAT ! latitude of point to define
REAL :: ZLON ! longitude of point to define
REAL :: ZDIST ! current distance to valid point (in lat/lon grid)
REAL, DIMENSION(:), ALLOCATABLE :: ZNDIST! smallest distance to valid point
REAL, DIMENSION(:,:), ALLOCATABLE :: ZNDIST! smallest distance to valid point
REAL :: ZCOSLA! cosine of latitude
REAL :: ZLONSC! longitude of valid point
REAL :: ZIDLO, ZIDLOMAX, ZIDLOMIN, ZIDLAMAX, ZIDLAMIN
......@@ -118,8 +118,6 @@ IF (LHOOK) CALL DR_HOOK('HOR_EXTRAPOL_SURF_1',0,ZHOOK_HANDLE)
INO = SIZE(PFIELD,1)
INL = SIZE(PFIELD,2)
!
ALLOCATE(ZNDIST(INL))
!
!-------------------------------------------------------------------------------
!
GLALO = HCOORTYPE=='LALO'
......@@ -346,10 +344,12 @@ IF (LHOOK) CALL DR_HOOK('HOR_EXTRAPOL_SURF_31',0,ZHOOK_HANDLE_OMP)
#endif
ENDIF
!$OMP PARALLEL DO PRIVATE(JI,ZNDIST,IDX,ZCOSLA,JISC,ID0,ZLONSC,ZDIST)
ALLOCATE(ZNDIST(IBOR(1,J),INL))
!$OMP PARALLEL DO PRIVATE(JI,IDX,ZCOSLA,JISC,JL,ID0,ZLONSC,ZDIST)
DO JI=1,IBOR(1,J)
ZNDIST(:) = XUNDEF
ZNDIST(JI,:) = XUNDEF
IDX = IBOR(2,J)+1
ZCOSLA=COS(ZCOOR(JI,1)*ZRAD)
DO JISC = 1,IBOR(2,J)
......@@ -366,10 +366,10 @@ IF (LHOOK) CALL DR_HOOK('HOR_EXTRAPOL_SURF_31',0,ZHOOK_HANDLE_OMP)
ZDIST= (ZLA(ID0)-ZCOOR(JI,1)) ** 2 + (ZLONSC-ZCOOR(JI,2)) ** 2
END IF
DO JL=1,INL
IF (ZDIST<=ZNDIST(JL)) THEN
IF (ZDIST<=ZNDIST(JI,JL)) THEN
IF (PFIELD_IN(ID0,JL)/=XUNDEF) THEN
ZFIELD(JI,JL) = PFIELD_IN(ID0,JL)
ZNDIST(JL) = ZDIST
ZNDIST(JI,JL) = ZDIST
ENDIF
ENDIF
ENDDO
......@@ -377,6 +377,8 @@ IF (LHOOK) CALL DR_HOOK('HOR_EXTRAPOL_SURF_31',0,ZHOOK_HANDLE_OMP)
END DO
ENDDO
!$OMP END PARALLEL DO
!
DEALLOCATE(ZNDIST)
!
IF (J/=NPIO) THEN
!send values found to extrapolate
......@@ -396,8 +398,6 @@ IF (LHOOK) CALL DR_HOOK('HOR_EXTRAPOL_SURF_31',0,ZHOOK_HANDLE_OMP)
ENDDO
IF (LHOOK) CALL DR_HOOK('HOR_EXTRAPOL_SURF_31',1,ZHOOK_HANDLE_OMP)
!
DEALLOCATE(ZNDIST)
!
IF (LHOOK) CALL DR_HOOK('HOR_EXTRAPOL_SURF_32',0,ZHOOK_HANDLE)
!
IDX_I = IDX_I + 3
......
......@@ -315,6 +315,7 @@ IF (LHOOK) CALL DR_HOOK("MODD_DATA_ISBA_N:DATA_ISBA_INIT",0,ZHOOK_HANDLE)
NULLIFY(YDATA_ISBA%XPAR_WFC)
NULLIFY(YDATA_ISBA%XPAR_WSAT)
!
YDATA_ISBA%NVEGTYPE=0
YDATA_ISBA%NTIME=0
YDATA_ISBA%LDATA_MIXPAR=.FALSE.
YDATA_ISBA%LDATA_VEGTYPE=.FALSE.
......
......@@ -54,9 +54,7 @@ USE MODD_SURF_ATM_n, ONLY : SURF_ATM_t
USE MODD_SSO_n, ONLY : SSO_t
USE MODD_GRID_CONF_PROJ_n, ONLY : GRID_CONF_PROJ_t
!
USE MODD_PREP, ONLY : CINGRID_TYPE, CINTERP_TYPE, XZS_LS, &
XLAT_OUT, XLON_OUT, XX_OUT, XY_OUT, &
LINTERP, CMASK
USE MODD_PREP, ONLY : CINGRID_TYPE, CINTERP_TYPE, XZS_LS, LINTERP, CMASK
USE MODD_GRID_GRIB, ONLY : CINMODEL
!
USE MODD_PREP_ISBA, ONLY : XGRID_SOIL, NGRID_LEVEL, LSNOW_IDEAL, &
......
......@@ -95,6 +95,7 @@ REAL, DIMENSION(:), ALLOCATABLE :: ZD ! total snow depth
REAL, DIMENSION(:,:), ALLOCATABLE :: ZDEPTH ! thickness of each layer (m)
REAL, DIMENSION(:,:), ALLOCATABLE :: ZGRID ! normalized input grid
!
REAL, DIMENSION(:), ALLOCATABLE :: ZMASK
INTEGER, DIMENSION(:), ALLOCATABLE :: IMASK_P
!
LOGICAL :: GTOWN ! town variables written in the file
......@@ -104,7 +105,7 @@ INTEGER :: IVERSION_PGD, IVERSION_PREP ! SURFEX
LOGICAL :: GOLD_NAME ! old name flag
INTEGER :: IBUGFIX_PGD, IBUGFIX_PREP ! SURFEX bug version
INTEGER :: IVEGTYPE ! actual number of vegtypes
INTEGER :: JL ! loop on snow vertical grids
INTEGER :: JV, JL ! loop on snow vertical grids
INTEGER :: JI ! loop on pts
INTEGER :: INI
CHARACTER(LEN=8) :: YAREA ! area treated ('ROOF','ROAD','VEG ')
......@@ -159,6 +160,18 @@ CALL CLOSE_AUX_IO_SURF(HFILEPGD,HFILEPGDTYPE)
!
CALL OPEN_AUX_IO_SURF(HFILEPGD,HFILEPGDTYPE,YMASK)
!
ALLOCATE(ZMASK(INI))
IF (IVERSION_PGD>=7) THEN
IF (YAREA(1:4)=='VEG ') THEN
YRECFM='FRAC_NATURE'
ELSE
YRECFM='FRAC_TOWN'
ENDIF
CALL READ_SURF(HFILEPGDTYPE,YRECFM,ZMASK,IRESP,HDIR='A')
ELSE
ZMASK(:) = 1.
ENDIF
!
IF (YAREA(1:4)=='VEG ') THEN
YRECFM = 'PATCH_NUMBER'
CALL READ_SURF(HFILEPGDTYPE,YRECFM,IPATCH,IRESP,HDIR='-')
......@@ -374,6 +387,14 @@ ENDDO
!
DEALLOCATE(IMASK_P)
!
DO JV = 1,SIZE(PFIELD,3)
DO JL = 1,SIZE(PFIELD,2)
WHERE (ZMASK(:)==0.) PFIELD(:,JL,JV) = XUNDEF
ENDDO
ENDDO
!
DEALLOCATE(ZMASK)
!
!-------------------------------------------------------------------------------------
!
!* 9. End of IO
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment