diff --git a/src/LIB/SURCOUCHE/src/mode_io_file.f90 b/src/LIB/SURCOUCHE/src/mode_io_file.f90 index bab9c3a436336c10660c129cf08ca8115c937358..d3a539dff154ed867b4a470a64a947f79b9bbb12 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_file.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_file.f90 @@ -192,15 +192,13 @@ SELECT CASE(TPFILE%CTYPE) hdirname = tpfile%cdirname, & klfinprar = tpfile%nlfinprar, klfitype = tpfile%nlfitype, klfiverb = tpfile%nlfiverb, & hformat = tpfile%cformat, & - osplit_ioz=.false. ) + tpmainfile = tpfile, osplit_ioz=.false. ) ELSE call IO_File_add2list( tzfile_split, trim(tpfile%cname)//trim(yfile), tpfile%ctype, tpfile%cmode, & klfinprar = tpfile%nlfinprar, klfitype = tpfile%nlfitype, klfiverb = tpfile%nlfiverb, & hformat = tpfile%cformat, & - osplit_ioz=.false. ) + tpmainfile = tpfile, osplit_ioz=.false. ) END IF - - TZFILE_SPLIT%TMAINFILE => TPFILE END IF TPFILE%TFILES_IOZ(IFILE)%TFILE => TZFILE_SPLIT diff --git a/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 b/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 index d2054a233d5ac5c16399985fac28f5727e85c6c7..e8f2fba8603aa1354b8e05384e2b633701fcee35 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 @@ -839,11 +839,12 @@ SUBROUTINE POPULATE_STRUCT(TPFILE_FIRST,TPFILE_LAST,KSTEPS,HFILETYPE,TPBAKOUTN,K END SUBROUTINE POPULATE_STRUCT ! END SUBROUTINE IO_Bakout_struct_prepare -! -SUBROUTINE IO_File_add2list(TPFILE,HNAME,HTYPE,HMODE, & - HFORM,HACCESS,HFORMAT,HDIRNAME, & - KLFINPRAR,KLFITYPE,KLFIVERB,KRECL,KMODEL, & - TPDADFILE,TPDATAFILE,OOLD,OSPLIT_IOZ) + + +SUBROUTINE IO_File_add2list( TPFILE, HNAME, HTYPE, HMODE, & + HFORM, HACCESS, HFORMAT, HDIRNAME, & + KLFINPRAR, KLFITYPE, KLFIVERB, KRECL, KMODEL, & + TPDADFILE, TPDATAFILE, TPMAINFILE, OOLD, OSPLIT_IOZ ) ! USE MODD_BAKOUT, ONLY: LOUT_COMPRESS,LOUT_REDUCE_FLOAT_PRECISION,NOUT_COMPRESS_LEVEL USE MODD_CONF, ONLY: CPROGRAM @@ -866,6 +867,7 @@ INTEGER, OPTIONAL,INTENT(IN) :: KRECL !Record length INTEGER, OPTIONAL,INTENT(IN) :: KMODEL !Model number TYPE(TFILEDATA),POINTER,OPTIONAL,INTENT(IN) :: TPDADFILE !Corresponding dad file TYPE(TFILEDATA),POINTER,OPTIONAL,INTENT(IN) :: TPDATAFILE!Corresponding data file (used only for DES files) +TYPE(TFILEDATA),POINTER,OPTIONAL,INTENT(IN) :: TPMAINFILE!Corresponding main file (for subfiles) LOGICAL, OPTIONAL,INTENT(IN) :: OOLD !FALSE if new file (should not be found) !TRUE if the file could already be in the list ! (add it only if not yet present) @@ -972,6 +974,9 @@ END IF IF (PRESENT(TPDATAFILE) .AND. TRIM(HTYPE)/='DES') & CALL PRINT_MSG(NVERB_WARNING,'IO','IO_File_add2list','optional argument TPDATAFILE is not used by '//TRIM(HTYPE)//' files') ! +IF ( PRESENT( TPMAINFILE) .AND. TRIM(HTYPE) /= 'MNHBACKUP' .AND. TRIM(HTYPE) /= 'MNHOUTPUT' ) & + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_File_add2list','optional argument TMAINFILE is not used by '//TRIM(HTYPE)//' files') +! IF (.NOT.ASSOCIATED(TFILE_LAST)) THEN ALLOCATE(TFILE_LAST) TFILE_FIRST => TFILE_LAST @@ -1021,6 +1026,14 @@ else tpfile%nsubfiles_ioz = 0 end if +IF ( PRESENT(TPMAINFILE) ) THEN + IF ( .NOT. ASSOCIATED( TPMAINFILE ) ) & + CALL PRINT_MSG( NVERB_ERROR, 'IO', 'IO_File_add2list', 'TPMAINFILE is not associated for file ' // TRIM(HNAME) ) + TPFILE%TMAINFILE => TPMAINFILE +ELSE + TPFILE%TMAINFILE => NULL() +END IF + SELECT CASE(TPFILE%CTYPE) !Chemistry input files CASE('CHEMINPUT')