summaryrefslogtreecommitdiff
path: root/Dragon/src/APXGEP.f
diff options
context:
space:
mode:
authorAlain Hebert <alainhebert@Alains-MacBook-Pro.local>2025-10-15 12:05:46 +0200
committerAlain Hebert <alainhebert@Alains-MacBook-Pro.local>2025-10-15 12:05:46 +0200
commit4dfbb001df4d32309b1b0d3553e5eb7717b9914c (patch)
tree625e1e002aefcdd5a87a27b3be2e3421eb89c810 /Dragon/src/APXGEP.f
parent881666deacd270006a96823f83691343b786df3a (diff)
#7: Missing PARAM group in APEX datafile produced by module APX:
Diffstat (limited to 'Dragon/src/APXGEP.f')
-rw-r--r--Dragon/src/APXGEP.f35
1 files changed, 29 insertions, 6 deletions
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.