diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90 index 475b028fed0d3598f843e2e059f64cfa1ba278bd..e0858d4b37b740b33df8949d772f992d73cd782b 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