From 4dfbb001df4d32309b1b0d3553e5eb7717b9914c Mon Sep 17 00:00:00 2001 From: Alain Hebert Date: Wed, 15 Oct 2025 12:05:46 +0200 Subject: #7: Missing PARAM group in APEX datafile produced by module APX: --- Dragon/src/APXGEP.f | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) (limited to 'Dragon/src/APXGEP.f') diff --git a/Dragon/src/APXGEP.f b/Dragon/src/APXGEP.f index 3716c05..58fa62b 100644 --- a/Dragon/src/APXGEP.f +++ b/Dragon/src/APXGEP.f @@ -51,15 +51,16 @@ INTEGER RANK,TYPE,NBYTE,DIMSR(5) PARAMETER (NSTATE=40,MAXPAR=50) INTEGER IDATA(NSTATE) - CHARACTER TEXT4*4,TEXT12*12,HSMG*131 + CHARACTER TEXT4*4,TEXT12*12,HSMG*131,RECNAM*80,REC100*100 LOGICAL LGERR,COMTRE,LAST *---- * ALLOCATABLE ARRAYS *---- INTEGER, ALLOCATABLE, DIMENSION(:) :: IDEBAR,IARBVA,IORIGI,IVAL0, - 1 DIMS_APX - INTEGER, ALLOCATABLE, DIMENSION(:) :: JDEBAR,JARBVA + 1 DIMS_APX,JDEBAR,JARBVA,VINTE + REAL, ALLOCATABLE, DIMENSION(:) :: VREAL CHARACTER(LEN=8), ALLOCATABLE, DIMENSION(:) :: PARFMT + CHARACTER(LEN=12), ALLOCATABLE, DIMENSION(:) :: VCHAR CHARACTER(LEN=80), ALLOCATABLE, DIMENSION(:) :: PARNAM *---- * RECOVER INFORMATION FROM THE 'DIMSAP' PARAMETER LIST. @@ -107,11 +108,33 @@ WRITE(6,110) (MUPLET(I),I=1,NPAR) WRITE(6,'(/)') ENDIF - DO 15 I=1,NPAR - IF(MUPLET(I).EQ.0) THEN - WRITE(HSMG,'(33HAPXGEP: UNDEFINED MUPLET ELEMENT=,I6)') I +*---- +* CREATE PARAM GROUP +*---- + CALL hdf5_read_data(IPAPX,"/NCALS",NCALS) + WRITE(RECNAM,'(4Hcalc,I8)') NCALS + CALL hdf5_create_group(IPAPX,TRIM(RECNAM)//"/PARAM") + DO 15 IPAR=1,NPAR + IF(MUPLET(IPAR).EQ.0) THEN + WRITE(HSMG,'(33HAPXGEP: UNDEFINED MUPLET ELEMENT=,I6)') IPAR CALL XABORT(HSMG) ENDIF + IV=MUPLET(IPAR) + WRITE(RECNAM,'(17H/paramvalues/PVAL,I8)') IPAR + WRITE(REC100,'(4Hcalc,I8,7H/PARAM/,A)') NCALS,PARNAM(IPAR) + IF(PARFMT(IPAR).EQ.'FLOTTANT') THEN + CALL hdf5_read_data(IPAPX,RECNAM,VREAL) + CALL hdf5_write_data(IPAPX,TRIM(REC100),VREAL(IV)) + DEALLOCATE(VREAL) + ELSE IF(PARFMT(IPAR).EQ.'ENTIER') THEN + CALL hdf5_read_data(IPAPX,RECNAM,VINTE) + CALL hdf5_write_data(IPAPX,TRIM(REC100),VINTE(IV)) + DEALLOCATE(VINTE) + ELSE IF(PARFMT(IPAR).EQ.'CHAINE') THEN + CALL hdf5_read_data(IPAPX,RECNAM,VCHAR) + CALL hdf5_write_data(IPAPX,TRIM(REC100),VCHAR(IV)) + DEALLOCATE(VCHAR) + ENDIF 15 CONTINUE *---- * INTRODUCE VALUES INTO GLOBAL PARAMETER TREE. -- cgit v1.2.3