From d56f17e72af8ed719f1c331053e9e32dde586efb Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Fri, 1 Feb 2019 16:06:34 +0100 Subject: [PATCH] Philippe 01/02/2019: bug correction in case XRT is not associated --- src/LIB/SURCOUCHE/src/mode_field.f90 | 151 ++++++++++++++++++--------- 1 file changed, 104 insertions(+), 47 deletions(-) diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90 index 475b028fe..e0858d4b3 100644 --- a/src/LIB/SURCOUCHE/src/mode_field.f90 +++ b/src/LIB/SURCOUCHE/src/mode_field.f90 @@ -7,6 +7,7 @@ ! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O ! Modifications: ! Philippe Wautelet: 29/01/2019 : small bug correction (null pointers) in FIELDLIST_GOTO_MODEL if NESPGD or PGD +! Philippe Wautelet: 01/02/2019 : bug correction in case XRT is not associated !----------------------------------------------------------------- MODULE MODE_FIELD ! @@ -3840,26 +3841,51 @@ CALL FIND_FIELD_ID_FROM_MNHNAME('TKET', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(K CALL FIND_FIELD_ID_FROM_MNHNAME('PABST',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XPABST CALL FIND_FIELD_ID_FROM_MNHNAME('RT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X4D(KFROM)%DATA => XRT ! -IF (CONF_MODEL(KFROM)%IDX_RVT>0) THEN - CALL FIND_FIELD_ID_FROM_MNHNAME('RVT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRT(:,:,:,CONF_MODEL(KFROM)%IDX_RVT) -END IF -IF (CONF_MODEL(KFROM)%IDX_RCT>0) THEN - CALL FIND_FIELD_ID_FROM_MNHNAME('RCT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRT(:,:,:,CONF_MODEL(KFROM)%IDX_RCT) -END IF -IF (CONF_MODEL(KFROM)%IDX_RRT>0) THEN - CALL FIND_FIELD_ID_FROM_MNHNAME('RRT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRT(:,:,:,CONF_MODEL(KFROM)%IDX_RRT) -END IF -IF (CONF_MODEL(KFROM)%IDX_RIT>0) THEN - CALL FIND_FIELD_ID_FROM_MNHNAME('RIT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRT(:,:,:,CONF_MODEL(KFROM)%IDX_RIT) -END IF -IF (CONF_MODEL(KFROM)%IDX_RST>0) THEN - CALL FIND_FIELD_ID_FROM_MNHNAME('RST', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRT(:,:,:,CONF_MODEL(KFROM)%IDX_RST) -END IF -IF (CONF_MODEL(KFROM)%IDX_RGT>0) THEN - CALL FIND_FIELD_ID_FROM_MNHNAME('RGT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRT(:,:,:,CONF_MODEL(KFROM)%IDX_RGT) -END IF -IF (CONF_MODEL(KFROM)%IDX_RHT>0) THEN - CALL FIND_FIELD_ID_FROM_MNHNAME('RHT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRT(:,:,:,CONF_MODEL(KFROM)%IDX_RHT) +IF (ASSOCIATED(XRT)) THEN + IF (CONF_MODEL(KFROM)%IDX_RVT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RVT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRT(:,:,:,CONF_MODEL(KFROM)%IDX_RVT) + END IF + IF (CONF_MODEL(KFROM)%IDX_RCT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RCT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRT(:,:,:,CONF_MODEL(KFROM)%IDX_RCT) + END IF + IF (CONF_MODEL(KFROM)%IDX_RRT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RRT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRT(:,:,:,CONF_MODEL(KFROM)%IDX_RRT) + END IF + IF (CONF_MODEL(KFROM)%IDX_RIT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RIT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRT(:,:,:,CONF_MODEL(KFROM)%IDX_RIT) + END IF + IF (CONF_MODEL(KFROM)%IDX_RST>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RST', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRT(:,:,:,CONF_MODEL(KFROM)%IDX_RST) + END IF + IF (CONF_MODEL(KFROM)%IDX_RGT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RGT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRT(:,:,:,CONF_MODEL(KFROM)%IDX_RGT) + END IF + IF (CONF_MODEL(KFROM)%IDX_RHT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RHT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>XRT(:,:,:,CONF_MODEL(KFROM)%IDX_RHT) + END IF +ELSE + IF (CONF_MODEL(KFROM)%IDX_RVT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RVT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>NULL() + END IF + IF (CONF_MODEL(KFROM)%IDX_RCT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RCT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>NULL() + END IF + IF (CONF_MODEL(KFROM)%IDX_RRT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RRT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>NULL() + END IF + IF (CONF_MODEL(KFROM)%IDX_RIT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RIT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>NULL() + END IF + IF (CONF_MODEL(KFROM)%IDX_RST>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RST', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>NULL() + END IF + IF (CONF_MODEL(KFROM)%IDX_RGT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RGT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>NULL() + END IF + IF (CONF_MODEL(KFROM)%IDX_RHT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RHT', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA=>NULL() + END IF + END IF ! CALL FIND_FIELD_ID_FROM_MNHNAME('SUPSATMAX',IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XSUPSAT @@ -4126,33 +4152,64 @@ CALL FIND_FIELD_ID_FROM_MNHNAME('TKET', IID,IRESP); XTKET => TFIELDLIST(IID)%TF CALL FIND_FIELD_ID_FROM_MNHNAME('PABST',IID,IRESP); XPABST => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA CALL FIND_FIELD_ID_FROM_MNHNAME('RT', IID,IRESP); XRT => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA ! -IF (CONF_MODEL(KTO)%IDX_RVT>0) THEN - CALL FIND_FIELD_ID_FROM_MNHNAME('RVT',IID2,IRESP) - TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RVT) -END IF -IF (CONF_MODEL(KTO)%IDX_RCT>0) THEN - CALL FIND_FIELD_ID_FROM_MNHNAME('RCT',IID2,IRESP) - TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RCT) -END IF -IF (CONF_MODEL(KTO)%IDX_RRT>0) THEN - CALL FIND_FIELD_ID_FROM_MNHNAME('RRT',IID2,IRESP) - TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RRT) -END IF -IF (CONF_MODEL(KTO)%IDX_RIT>0) THEN - CALL FIND_FIELD_ID_FROM_MNHNAME('RIT',IID2,IRESP) - TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RIT) -END IF -IF (CONF_MODEL(KTO)%IDX_RST>0) THEN - CALL FIND_FIELD_ID_FROM_MNHNAME('RST',IID2,IRESP) - TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RST) -END IF -IF (CONF_MODEL(KTO)%IDX_RGT>0) THEN - CALL FIND_FIELD_ID_FROM_MNHNAME('RGT',IID2,IRESP) - TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RGT) -END IF -IF (CONF_MODEL(KTO)%IDX_RHT>0) THEN - CALL FIND_FIELD_ID_FROM_MNHNAME('RHT',IID2,IRESP) - TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RHT) +IF (ASSOCIATED(XRT)) THEN + IF (CONF_MODEL(KTO)%IDX_RVT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RVT',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RVT) + END IF + IF (CONF_MODEL(KTO)%IDX_RCT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RCT',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RCT) + END IF + IF (CONF_MODEL(KTO)%IDX_RRT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RRT',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RRT) + END IF + IF (CONF_MODEL(KTO)%IDX_RIT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RIT',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RIT) + END IF + IF (CONF_MODEL(KTO)%IDX_RST>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RST',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RST) + END IF + IF (CONF_MODEL(KTO)%IDX_RGT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RGT',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RGT) + END IF + IF (CONF_MODEL(KTO)%IDX_RHT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RHT',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => TFIELDLIST(IID)%TFIELD_X4D(KTO)%DATA(:,:,:,CONF_MODEL(KTO)%IDX_RHT) + END IF +ELSE + IF (CONF_MODEL(KTO)%IDX_RVT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RVT',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => NULL() + END IF + IF (CONF_MODEL(KTO)%IDX_RCT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RCT',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => NULL() + END IF + IF (CONF_MODEL(KTO)%IDX_RRT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RRT',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => NULL() + END IF + IF (CONF_MODEL(KTO)%IDX_RIT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RIT',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => NULL() + END IF + IF (CONF_MODEL(KTO)%IDX_RST>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RST',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => NULL() + END IF + IF (CONF_MODEL(KTO)%IDX_RGT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RGT',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => NULL() + END IF + IF (CONF_MODEL(KTO)%IDX_RHT>0) THEN + CALL FIND_FIELD_ID_FROM_MNHNAME('RHT',IID2,IRESP) + TFIELDLIST(IID2)%TFIELD_X3D(KTO)%DATA => NULL() + END IF END IF ! CALL FIND_FIELD_ID_FROM_MNHNAME('SUPSATMAX',IID,IRESP); XSUPSAT => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA -- GitLab