diff options
| author | HEBERT Alain <alain.hebert@polymtl.ca> | 2025-12-10 15:46:23 -0500 |
|---|---|---|
| committer | HEBERT Alain <alain.hebert@polymtl.ca> | 2025-12-10 15:46:23 -0500 |
| commit | c618c1e12f244bbe36bf96741878fa2ede83c750 (patch) | |
| tree | 10723603ec3facacae8f99bd949e21faddaf717a /Dragon/src/EDIDRV.f | |
| parent | 3106f08451b6ad788e4f37510c068fc50c9abe86 (diff) | |
| parent | 7c453e211b55bbe4a7f6f33f71037522cd2359fd (diff) | |
Merge branch '7-missing-param-group-in-apex-datafile-produced-by-module-apx' into 'main'
#7: Add missing AVG_FLUX record in ADF directory of the macrolib
See merge request dragon/5.1!31
Diffstat (limited to 'Dragon/src/EDIDRV.f')
| -rw-r--r-- | Dragon/src/EDIDRV.f | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/Dragon/src/EDIDRV.f b/Dragon/src/EDIDRV.f index 4c00e28..bc48d6f 100644 --- a/Dragon/src/EDIDRV.f +++ b/Dragon/src/EDIDRV.f @@ -45,8 +45,9 @@ * IADF flag for assembly discontinuity factors (ADF) information: * = 0 do not compute them; * = 1 compute them using ALBS information; -* = 2 compute them using averaged fluxes in boundary regions; -* = 3 compute them using SYBIL/ARM interface currents. +* = -2/2 compute them using averaged fluxes in boundary regions; +* = 3 compute them using SYBIL/ARM or MOC interface currents; +* = 4 recover ADF information from input macrolib. * IDFM flag for ADF info in input macrolib (0/1/2: absent/present). * NW type of weighting for P1 cross section information: * = 0 P0; = 1 P1. @@ -407,16 +408,7 @@ > B2,NGROUP,NIFISS,NGCOND,ITRANC,ILEAKS,NREGIO,MATCOD, > VOLUME,KEYFLX,IGCOND,FLUXES,NMLEAK) ELSE IF((IADF.EQ.2).OR.(IADF.EQ.-2)) THEN - ALLOCATE(WORKF(NGCOND)) - IF(IADF.EQ.-2) THEN -* recover averaged fluxes used to compute ADF - DO IGR=1,NGCOND - WORKF(IGR)=SUM(FLUXC(:,IGR,1))/SUM(VOLME(:)) - ENDDO - ELSE - WORKF(:NGCOND)=1.0 - ENDIF -* use averaged fluxes obtained over boundary regions +* use averaged fluxes obtained over gap boundary regions IPADF=LCMGID(IPEDIT,'REF:ADF') CALL LCMGET(IPADF,'NTYPE',NTYPE) IF(NTYPE.EQ.0) CALL XABORT('EDIADF: NTYPE=0.') @@ -426,15 +418,30 @@ DO IT=1,NTYPE HTYPE=HADF(IT) CALL EDIGAP(IPADF,HTYPE,NGROUP,NGCOND,NREGIO,VOLUME, - > IGCOND,FLUXES,WORKF,IPRINT,COURI) + > IGCOND,FLUXES,IPRINT,COURI) ALLOCATE(ADF(NMERGE,NGCOND)) DO IGR=1,NGCOND - ADF(:NMERGE,IGR)=COURI(IGR) + ZCOUR=COURI(IGR) + IF(IADF.EQ.-2) THEN +* recover averaged fluxes used to compute ADF + DO IMRG=1,NMERGE + ADF(IMRG,IGR)=ZCOUR*VOLME(IMRG)/FLUXC(IMRG,IGR,1) + ENDDO + ELSE + ADF(:NMERGE,IGR)=ZCOUR + ENDIF ENDDO CALL LCMPUT(IPMAC2,HTYPE,NMERGE*NGCOND,2,ADF) + IF(IADF.EQ.2) THEN + DO IGR=1,NGCOND + DO IMRG=1,NMERGE + ADF(IMRG,IGR)=FLUXC(IMRG,IGR,1)/VOLME(IMRG) + ENDDO + ENDDO + CALL LCMPUT(IPMAC2,'AVG_FLUX',NMERGE*NGCOND,2,ADF) + ENDIF DEALLOCATE(ADF) ENDDO - DEALLOCATE(WORKF) CALL LCMPUT(IPMAC2,'NTYPE',1,1,NTYPE) CALL LCMPTC(IPMAC2,'HADF',8,NTYPE,HADF) DEALLOCATE(COURI,HADF) @@ -710,7 +717,7 @@ DEALLOCATE(IPISO,ISONR,ISONA,IDEPL,TN,MIX,ITYPE,DEN,LSISO) ENDIF *---- -* SET IADF IN MACROLIB AND MICROLIB STATE VECTORS +* RESET IADF IN MACROLIB AND MICROLIB STATE VECTORS *---- IF((CURNAM.NE.' ').AND.(IADF.NE.0)) THEN IPMIC2=LCMDID(IPEDIT,CURNAM) |
