Skip to content
Snippets Groups Projects
Commit 7882ea7b authored by WAUTELET Philippe's avatar WAUTELET Philippe
Browse files

Philippe 12/12/2016: SPAWNING: use new pointers for variables in TFIELDLIST

parent 14bb6983
No related branches found
No related tags found
No related merge requests found
......@@ -63,4 +63,10 @@ CHARACTER (LEN=28) :: CDADINIFILE ! DAD fm-file for initial file
CHARACTER (LEN=28) :: CDADSPAFILE ! DAD fm-file for spawning file
! if LBAL_ONLY=T
!
! Pointers to the data of the mesh #1
REAL,DIMENSION(:,:), SAVE,POINTER :: XACPRR1
REAL,DIMENSION(:,:,:),SAVE,POINTER :: XTHT1
REAL,DIMENSION(:,:,:),SAVE,POINTER :: XUT1
REAL,DIMENSION(:,:,:),SAVE,POINTER :: XVT1
!
END MODULE MODD_SPAWN
......@@ -174,6 +174,7 @@ USE MODD_ELEC_DESCR, ONLY: CELECNAMES
!
USE MODD_BIKHARDT_n
USE MODD_LUNIT_n
USE MODD_SPAWN
!
USE MODI_BIKHARDT
!
......@@ -195,8 +196,6 @@ USE MODD_LATZ_EDFLX
USE MODD_DEF_EDDY_FLUX_n
USE MODD_DEF_EDDYUV_FLUX_n
!
USE MODE_FIELD
!
USE MODE_MPPDB
USE MODE_ll
!
......@@ -243,7 +242,8 @@ INTEGER :: IRR ! Number of moist variables
REAL, DIMENSION(SIZE(FIELD_MODEL(1)%XRT,1),SIZE(FIELD_MODEL(1)%XRT,2),SIZE(FIELD_MODEL(1)%XRT,3)) :: ZHUT ! relative humidity
! (model 1)
!REAL, DIMENSION(SIZE(FIELD_MODEL(1)%XTHT,1),SIZE(FIELD_MODEL(1)%XTHT,2),SIZE(FIELD_MODEL(1)%XTHT,3)) :: ZTHVT! virtual pot. T
REAL, DIMENSION(:,:,:),ALLOCATABLE :: ZTHVT! virtual pot. T
!REAL, DIMENSION(:,:,:),ALLOCATABLE :: ZTHVT! virtual pot. T
REAL, DIMENSION(SIZE(XTHT1,1),SIZE(XTHT1,2),SIZE(XTHT1,3)) :: ZTHVT! virtual pot. T
! (model 1)
!$20140708
!$***** 3D
......@@ -280,7 +280,6 @@ CHARACTER (LEN=16) :: YRECFM_T ! management
CHARACTER (LEN=16) :: YRECFM_M ! management
CHARACTER (LEN=100) :: YCOMMENT ! variables
CHARACTER (LEN=2) :: YDIR
INTEGER :: IID
!
CHARACTER(LEN=2) :: INDICE
INTEGER :: I
......@@ -300,12 +299,7 @@ CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP)
!
!* 1.1 Secondary variables
!
!CALL COMPUTE_THV_HU(CONF_MODEL(1)%LUSERV,FIELD_MODEL(1)%XRT,FIELD_MODEL(1)%XTHT,FIELD_MODEL(1)%XPABST,ZTHVT,ZHUT)
CALL FIND_FIELD_ID_FROM_MNHNAME('THT',IID,IRESP)
ALLOCATE(ZTHVT(SIZE(TFIELDLIST(IID)%TFIELD_X3D(1)%DATA,1), &
SIZE(TFIELDLIST(IID)%TFIELD_X3D(1)%DATA,2), &
SIZE(TFIELDLIST(IID)%TFIELD_X3D(1)%DATA,3) ))
CALL COMPUTE_THV_HU(CONF_MODEL(1)%LUSERV,FIELD_MODEL(1)%XRT,TFIELDLIST(IID)%TFIELD_X3D(1)%DATA,FIELD_MODEL(1)%XPABST,ZTHVT,ZHUT)
CALL COMPUTE_THV_HU(CONF_MODEL(1)%LUSERV,FIELD_MODEL(1)%XRT,XTHT1,FIELD_MODEL(1)%XPABST,ZTHVT,ZHUT)
!
!* 1.2 Working arrays for reading in SON input file
!
......@@ -332,23 +326,15 @@ IF (KDXRATIO == 1 .AND. KDYRATIO == 1 ) THEN
!
!* 2.1.1 variables which always exist
!
! PUT (:,:,:) = FIELD_MODEL(1)%XUT (KXOR:KXEND,KYOR:KYEND,:)
! PVT (:,:,:) = FIELD_MODEL(1)%XVT (KXOR:KXEND,KYOR:KYEND,:)
CALL FIND_FIELD_ID_FROM_MNHNAME('UT',IID,IRESP)
PUT (:,:,:) = TFIELDLIST(IID)%TFIELD_X3D(1)%DATA(KXOR:KXEND,KYOR:KYEND,:)
CALL FIND_FIELD_ID_FROM_MNHNAME('VT',IID,IRESP)
PVT (:,:,:) = TFIELDLIST(IID)%TFIELD_X3D(1)%DATA(KXOR:KXEND,KYOR:KYEND,:)
PUT (:,:,:) = XUT1(KXOR:KXEND,KYOR:KYEND,:)
PVT (:,:,:) = XVT1(KXOR:KXEND,KYOR:KYEND,:)
PWT (:,:,:) = FIELD_MODEL(1)%XWT (KXOR:KXEND,KYOR:KYEND,:)
PTHVT(:,:,:) = ZTHVT(KXOR:KXEND,KYOR:KYEND,:)
!
! PLSUM (:,:,:) = FIELD_MODEL(1)%XUT (KXOR:KXEND,KYOR:KYEND,:)
! PLSVM (:,:,:) = FIELD_MODEL(1)%XVT (KXOR:KXEND,KYOR:KYEND,:)
PLSUM (:,:,:) = PUT (:,:,:)
PLSVM (:,:,:) = PVT (:,:,:)
PLSWM (:,:,:) = FIELD_MODEL(1)%XWT (KXOR:KXEND,KYOR:KYEND,:)
! PLSTHM(:,:,:) = FIELD_MODEL(1)%XTHT(KXOR:KXEND,KYOR:KYEND,:)
CALL FIND_FIELD_ID_FROM_MNHNAME('THT',IID,IRESP)
PLSTHM(:,:,:) = TFIELDLIST(IID)%TFIELD_X3D(1)%DATA(KXOR:KXEND,KYOR:KYEND,:)
PLSTHM(:,:,:) = XTHT1(KXOR:KXEND,KYOR:KYEND,:)
!
PLSRVM(:,:,:) = 0.
!
......@@ -484,14 +470,10 @@ ELSE
!
!$series of SET_LSFIELD_1WAY_ll
!$***** 3D VARS
! CALL SET_LSFIELD_1WAY_ll(FIELD_MODEL(1)%XUT(:,:,JI),ZUT_C(:,:,JI),2)
CALL FIND_FIELD_ID_FROM_MNHNAME('UT',IID,IRESP)
CALL SET_LSFIELD_1WAY_ll(TFIELDLIST(IID)%TFIELD_X3D(1)%DATA(:,:,JI),ZUT_C(:,:,JI),2)
CALL SET_LSFIELD_1WAY_ll(XUT1(:,:,JI),ZUT_C(:,:,JI),2)
CALL SET_LSFIELD_1WAY_ll(LSFIELD_MODEL(1)%XLSUM(:,:,JI), ZLSUM_C(:,:,JI),2)
!
! CALL SET_LSFIELD_1WAY_ll(FIELD_MODEL(1)%XVT(:,:,JI),ZVT_C(:,:,JI),2)
CALL FIND_FIELD_ID_FROM_MNHNAME('VT',IID,IRESP)
CALL SET_LSFIELD_1WAY_ll(TFIELDLIST(IID)%TFIELD_X3D(1)%DATA(:,:,JI),ZUT_C(:,:,JI),2)
CALL SET_LSFIELD_1WAY_ll(XVT1(:,:,JI),ZVT_C(:,:,JI),2)
CALL SET_LSFIELD_1WAY_ll(LSFIELD_MODEL(1)%XLSVM(:,:,JI),ZLSVM_C(:,:,JI),2)
!
CALL SET_LSFIELD_1WAY_ll(FIELD_MODEL(1)%XWT(:,:,JI),ZWT_C(:,:,JI),2)
......
......@@ -124,6 +124,7 @@ USE MODD_REF_n, ONLY: REF_MODEL
!
USE MODD_BIKHARDT_n
USE MODD_VER_INTERP_LIN
USE MODD_SPAWN
!
USE MODI_SHUMAN
USE MODI_BIKHARDT
......@@ -131,8 +132,6 @@ USE MODI_COMPUTE_EXNER_FROM_TOP
USE MODI_COEF_VER_INTERP_LIN
USE MODI_VER_INTERP_LIN
!
USE MODE_FIELD
!
USE MODE_MODELN_HANDLER
USE MODE_ll
USE MODE_MPPDB
......@@ -169,8 +168,7 @@ REAL, DIMENSION(:,:,:), ALLOCATABLE :: & ! MODEL 1 VARIABLES
ZTHV1, & ! virtual potential temperature at mass points at t or t-dt
ZHYDEXN1, & ! hydrostatic Exner functions at mass points at t or t-dt
ZSUMR ! sum of water mixing ratios (at t-dt or t)
!REAL, DIMENSION(SIZE(FIELD_MODEL(1)%XTHT,1),SIZE(FIELD_MODEL(1)%XTHT,2)) :: & ! MODEL 1 VARIABLES
REAL, DIMENSION(:,:),ALLOCATABLE :: & ! MODEL 1 VARIABLES
REAL, DIMENSION(SIZE(XTHT1,1),SIZE(XTHT1,2)) :: & ! MODEL 1 VARIABLES
ZHYDEXNTOP1 ! model top Exner functions at t or t-dt
!$20140709
REAL, DIMENSION(:,:), ALLOCATABLE :: ZHYDEXNTOP1_C
......@@ -190,7 +188,6 @@ REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZWORK
INTEGER :: IMI
INTEGER :: JI, IDIMX_C,IDIMY_C
INTEGER :: IINFO_ll
INTEGER :: IID,IRESP
!
!-------------------------------------------------------------------------------
!
......@@ -202,11 +199,8 @@ CALL GOTO_MODEL(2)
!
IIU = SIZE(PTHVT,1)
IJU = SIZE(PTHVT,2)
!IIU1= SIZE(FIELD_MODEL(1)%XTHT,1)
!IJU1= SIZE(FIELD_MODEL(1)%XTHT,2)
CALL FIND_FIELD_ID_FROM_MNHNAME('THT',IID,IRESP)
IIU1= SIZE(TFIELDLIST(IID)%TFIELD_X3D(1)%DATA,1)
IJU1= SIZE(TFIELDLIST(IID)%TFIELD_X3D(1)%DATA,2)
IIU1= SIZE(XTHT1,1)
IJU1= SIZE(XTHT1,2)
IKU=SIZE(PZZ,3)
IKE=IKU-JPVEXT
!
......@@ -236,20 +230,16 @@ END IF
ALLOCATE(ZEXN1(IIU1,IJU1,IKU))
ALLOCATE(ZTHV1(IIU1,IJU1,IKU))
ALLOCATE(ZSUMR(IIU1,IJU1,IKU))
ALLOCATE(ZHYDEXNTOP1(IIU1,IJU1))
ZSUMR(:,:,:) = 0.
DO JRR=1,CONF_MODEL(1)%NRR
ZSUMR(:,:,:) = ZSUMR(:,:,:) + FIELD_MODEL(1)%XRT(:,:,:,JRR)
END DO
!
ZEXN1(:,:,:)=(FIELD_MODEL(1)%XPABST(:,:,:)/XP00)**(XRD/XCPD)
CALL FIND_FIELD_ID_FROM_MNHNAME('THT',IID,IRESP)
IF (CONF_MODEL(1)%LUSERV) THEN
! ZTHV1(:,:,:)=FIELD_MODEL(1)%XTHT(:,:,:)*(1.+XRV/XRD*FIELD_MODEL(1)%XRT(:,:,:,1))/(1.+ZSUMR)
ZTHV1(:,:,:)=TFIELDLIST(IID)%TFIELD_X3D(1)%DATA(:,:,:)*(1.+XRV/XRD*FIELD_MODEL(1)%XRT(:,:,:,1))/(1.+ZSUMR)
ZTHV1(:,:,:)=XTHT1(:,:,:)*(1.+XRV/XRD*FIELD_MODEL(1)%XRT(:,:,:,1))/(1.+ZSUMR)
ELSE
! ZTHV1(:,:,:)=FIELD_MODEL(1)%XTHT(:,:,:)
ZTHV1(:,:,:)=TFIELDLIST(IID)%TFIELD_X3D(1)%DATA(:,:,:)
ZTHV1(:,:,:)=XTHT1(:,:,:)
END IF
DEALLOCATE(ZSUMR)
!
......
......@@ -122,14 +122,14 @@ USE MODD_LUNIT_n, ONLY : CLUOUT
USE MODD_FIELD_n, ONLY : XTHT
USE MODD_CONF, ONLY : CCONF,CPROGRAM
!
USE MODD_SPAWN
!
USE MODI_BIKHARDT ! Interface modules
!
USE MODE_MODELN_HANDLER
!
USE MODI_READ_PRECIP_FIELD
!
USE MODE_FIELD
!
!
IMPLICIT NONE
!
......@@ -180,7 +180,6 @@ CHARACTER (LEN=4):: YGETRCT,YGETRRT,YGETRST,YGETRGT,YGETRHT ! READ,INIT or SKIP
INTEGER :: ILU ! vertical size of arrays
!
INTEGER :: IDIMX,IDIMY
INTEGER :: IID,IRESP
!-------------------------------------------------------------------------------
!
!* 1. PROLOGUE:
......@@ -219,9 +218,7 @@ IF (KDXRATIO == 1 .AND. KDYRATIO == 1 ) THEN
PINPRR(:,:) = PRECIP_MODEL(1)%XINPRR(KXOR:KXEND,KYOR:KYEND)
PINPRR3D(:,:,:) = PRECIP_MODEL(1)%XINPRR3D(KXOR:KXEND,KYOR:KYEND,:)
PEVAP3D(:,:,:) = PRECIP_MODEL(1)%XEVAP3D(KXOR:KXEND,KYOR:KYEND,:)
! PACPRR(:,:) = PRECIP_MODEL(1)%XACPRR(KXOR:KXEND,KYOR:KYEND)
CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',IID,IRESP)
PACPRR(:,:) = TFIELDLIST(IID)%TFIELD_X2D(1)%DATA(KXOR:KXEND,KYOR:KYEND)
PACPRR(:,:) = XACPRR1(KXOR:KXEND,KYOR:KYEND)
END IF
!
IF (SIZE(PRECIP_MODEL(1)%XINPRS) /= 0 ) THEN
......@@ -297,12 +294,10 @@ ELSE
XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1, &
LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,PRECIP_MODEL(1)%XEVAP3D,PEVAP3D)
CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',IID,IRESP)
CALL BIKHARDT(XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, &
XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
2,2,IDIMX-1,IDIMY-1,KDXRATIO,KDYRATIO,1, &
! LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,PRECIP_MODEL(1)%XACPRR,PACPRR)
LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,TFIELDLIST(IID)%TFIELD_X2D(1)%DATA,PACPRR)
LBC_MODEL(1)%CLBCX,LBC_MODEL(1)%CLBCY,XACPRR1,PACPRR)
PINPRR(:,:)=MAX(0.,PINPRR(:,:))
PINPRR3D(:,:,:)=MAX(0.,PINPRR3D(:,:,:))
PEVAP3D(:,:,:)=MAX(0.,PEVAP3D(:,:,:))
......
......@@ -224,6 +224,7 @@ CALL MPPDB_CHECK3D(XUT,"SPAWNING-after boundaries::XUT",PRECISION)
CALL OPEN_ll(unit=ILUSPA,FILE=YEXSPA,iostat=IRESP,status="OLD",action='READ', &
form='FORMATTED',position="REWIND",mode=GLOBAL)
CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP)
CALL SET_POINTERS_TO_MODEL1()
CALL GOTO_MODEL(2)
CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP)
CALL INIT_NMLVAR
......@@ -256,6 +257,18 @@ SUBROUTINE UPDATE_MODD_FROM_NMLVAR
LRES_n=LRES
XRES_n=XRES
END SUBROUTINE UPDATE_MODD_FROM_NMLVAR
SUBROUTINE SET_POINTERS_TO_MODEL1()
!
USE MODD_FIELD_n
USE MODD_PRECIP_n
!
XACPRR1 => XACPRR
XTHT1 => XTHT
XUT1 => XUT
XVT1 => XVT
!
END SUBROUTINE SET_POINTERS_TO_MODEL1
!
!-------------------------------------------------------------------------------
!
......
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