diff options
| author | HEBERT Alain <alain.hebert@polymtl.ca> | 2025-10-22 06:17:28 -0400 |
|---|---|---|
| committer | HEBERT Alain <alain.hebert@polymtl.ca> | 2025-10-22 06:17:28 -0400 |
| commit | 2108052f8d9879e098c619b04dccb82020b8b0c9 (patch) | |
| tree | 13ebfa2d023465fbd3ab54422590fdda05483a48 | |
| parent | 46a6e3604f7ea10bd35d032bc282c6e031da0779 (diff) | |
| parent | 3b9b6425af90ada817a670222b92e709f3ffde3a (diff) | |
Merge branch '9-implement-option-merg-g2s-quad-in-module-edi' into 'main'
#9: Implement option MERG G2S QUAD in module EDI:
See merge request dragon/5.1!15
| -rw-r--r-- | Dragon/data/salmacro_proc/TDCM63.c2m | 4 | ||||
| -rw-r--r-- | Dragon/data/salmacro_proc/TDCM67.c2m | 13 | ||||
| -rw-r--r-- | Dragon/src/EDIG2S.f90 | 48 | ||||
| -rw-r--r-- | doc/IGE335/Section3.08.tex | 9 |
4 files changed, 67 insertions, 7 deletions
diff --git a/Dragon/data/salmacro_proc/TDCM63.c2m b/Dragon/data/salmacro_proc/TDCM63.c2m index edc2211..49e01a6 100644 --- a/Dragon/data/salmacro_proc/TDCM63.c2m +++ b/Dragon/data/salmacro_proc/TDCM63.c2m @@ -1,5 +1,5 @@ *---- -* TEST CASE TDCM54 +* TEST CASE TDCM63 * MACROSCOPIC CROSS SECTIONS * 4-group equilateral triangular geometry * Author: A. Hebert @@ -7,7 +7,7 @@ * Define STRUCTURES and MODULES used *---- MODULE G2S: SALT: MCCGT: MAC: ASM: FLU: TLM: DELETE: END: ; -SEQ_ASCII LatTEST_b :: FILE './LatTEST_b_S60.ps' ; +SEQ_ASCII LatTEST_b :: FILE './LatTEST_b_S60.eps' ; SEQ_ASCII GT_SAL :: FILE './lattice_hex_tspc_S30_7cells.dat' ; SEQ_ASCII GT_SAL_iso :: FILE './lattice_hex_tiso_S30_7cells.dat' ; LINKED_LIST TRACKF MACRO4G SYS FLUX ; diff --git a/Dragon/data/salmacro_proc/TDCM67.c2m b/Dragon/data/salmacro_proc/TDCM67.c2m index 2a2363e..9697b1f 100644 --- a/Dragon/data/salmacro_proc/TDCM67.c2m +++ b/Dragon/data/salmacro_proc/TDCM67.c2m @@ -5,8 +5,8 @@ *---- * Define STRUCTURES and MODULES used *---- -LINKED_LIST MACRO GEOM TRACK PIJ FLUX ; -MODULE MAC: G2S: SALT: ASM: FLU: GREP: DELETE: END: ; +LINKED_LIST MACRO GEOM TRACK PIJ FLUX OUT ; +MODULE MAC: G2S: SALT: ASM: FLU: EDI: GREP: DELETE: END: ; SEQ_BINARY TRACK_FIL ; SEQ_ASCII Fic_SAL :: FILE 'lattice_hex_tiso_S30_7cells_macro.dat' ; SEQ_ASCII Fic_SAL.eps :: FILE 'Fic_SAL_TDCM67.eps' ; @@ -42,6 +42,15 @@ PIJ FLUX := DELETE: PIJ FLUX ; * FLUX-CURRENT ITERATION WITHOUT FULL PIJ MATRIX RECONSTRUCTION PIJ := ASM: MACRO TRACK TRACK_FIL :: ARM EDIT 2 ; FLUX := FLU: PIJ MACRO TRACK :: EDIT 4 TYPE K ; + +* PIN-BY-PIN EDITION +OUT := EDI: FLUX MACRO TRACK Fic_SAL :: EDIT 2 + MERG G2S 2 + TRIA 0.0 0.0 0.68002 0.0 0.068002 0.39261 + QUAD 0.68002 0.0 2.382203 0.0 1.786652 1.031524 0.068002 0.39261 + ; + +* ASSERTS assertS FLUX :: 'K-EFFECTIVE' 1 <<keff>> ; assertS FLUX :: 'K-EFFECTIVE' 1 0.5548652 ; PIJ FLUX := DELETE: PIJ FLUX ; diff --git a/Dragon/src/EDIG2S.f90 b/Dragon/src/EDIG2S.f90 index 24ef2e7..c236d95 100644 --- a/Dragon/src/EDIG2S.f90 +++ b/Dragon/src/EDIG2S.f90 @@ -76,7 +76,7 @@ CONTAINS CALL REDGET(ITYPLU,NMERGE,REALIR,CARLIR,DBLLIR) IF(ITYPLU.NE.1) CALL XABORT('EDIG2S: INTEGER VARIABLE EXPECTED.') IF(NMERGE.LE.0) CALL XABORT('EDIG2S: INVALID VALUE OF NMERGE.') - ALLOCATE(NODE(6,NMERGE),ITNODE(NMERGE)) + ALLOCATE(NODE(8,NMERGE),ITNODE(NMERGE)) DO IM=1,NMERGE CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR) IF(ITYPLU.NE.3) CALL XABORT('EDIG2S: CHARACTER VARIABLE EXPECTED.') @@ -95,8 +95,15 @@ CONTAINS IF(ITYPLU.NE.2) CALL XABORT('EDIG2S: REAL VARIABLE EXPECTED(2).') NODE(I,IM)=REALIR ENDDO + ELSE IF(CARLIR.EQ.'QUAD') THEN + ITNODE(IM)=3 + DO I=1,8 + CALL REDGET(ITYPLU,INTLIR,REALIR,CARLIR,DBLLIR) + IF(ITYPLU.NE.2) CALL XABORT('EDIG2S: REAL VARIABLE EXPECTED(3).') + NODE(I,IM)=REALIR + ENDDO ELSE - CALL XABORT('EDIG2S: *RECT* OR *TRIA* KEYWORD EXPECTED.') + CALL XABORT('EDIG2S: *RECT*, *TRIA* OR *QUAD* KEYWORD EXPECTED.') ENDIF ENDDO !---- @@ -177,6 +184,25 @@ CONTAINS IF(IPAR(3).GT.0) ICOUNT(IPAR(3),IM)=ICOUNT(IPAR(3),IM)+1 ENDIF ENDIF + ELSE IF(ITNODE(IM).EQ.3) THEN + ! the quadrilateral is represented as two triangles + DO ITRI=1,2 + TLAMB1=EDIBAR(NODE((ITRI-1)*2+1:(ITRI-1)*2+6,IM),CX,CY) + TLAMB2=EDIBAR(NODE((ITRI-1)*2+1:(ITRI-1)*2+6,IM),DX,DY) + IF((TLAMB1(1).GE.-EPS).AND.(TLAMB1(2).GE.-EPS).AND.(TLAMB1(3).GE.-EPS).AND. & + (TLAMB2(1).GE.-EPS).AND.(TLAMB2(2).GE.-EPS).AND.(TLAMB2(3).GE.-EPS)) THEN + IF((ABS(TLAMB1(1)).LE.EPS).AND.(ABS(TLAMB2(1)).LE.EPS)) THEN + IF(IPAR(3).GT.0) ICOUNT(IPAR(3),IM)=ICOUNT(IPAR(3),IM)+1 + ELSE IF((ABS(TLAMB1(2)).LE.EPS).AND.(ABS(TLAMB2(2)).LE.EPS)) THEN + IF(IPAR(3).GT.0) ICOUNT(IPAR(3),IM)=ICOUNT(IPAR(3),IM)+1 + ELSE IF((ABS(TLAMB1(3)).LE.EPS).AND.(ABS(TLAMB2(3)).LE.EPS)) THEN + IF(IPAR(3).GT.0) ICOUNT(IPAR(3),IM)=ICOUNT(IPAR(3),IM)+1 + ELSE + IF(IPAR(2).GT.0) ICOUNT(IPAR(2),IM)=ICOUNT(IPAR(2),IM)+1 + IF(IPAR(3).GT.0) ICOUNT(IPAR(3),IM)=ICOUNT(IPAR(3),IM)+1 + ENDIF + ENDIF + ENDDO ENDIF ENDDO ELSE IF(ITYPE.EQ.2) THEN @@ -196,6 +222,15 @@ CONTAINS IF(IPAR(2).GT.0) ICOUNT(IPAR(2),IM)=ICOUNT(IPAR(2),IM)+1 IF(IPAR(3).GT.0) ICOUNT(IPAR(3),IM)=ICOUNT(IPAR(3),IM)+1 ENDIF + ELSE IF(ITNODE(IM).EQ.3) THEN + ! the quadrilateral is represented as two triangles + DO ITRI=1,2 + TLAMB1=EDIBAR(NODE((ITRI-1)*2+1:(ITRI-1)*2+6,IM),CX,CY) + IF((TLAMB1(1).GE.-EPS).AND.(TLAMB1(2).GE.-EPS).AND.(TLAMB1(3).GE.-EPS)) THEN + IF(IPAR(2).GT.0) ICOUNT(IPAR(2),IM)=ICOUNT(IPAR(2),IM)+1 + IF(IPAR(3).GT.0) ICOUNT(IPAR(3),IM)=ICOUNT(IPAR(3),IM)+1 + ENDIF + ENDDO ENDIF ENDDO ELSE IF(ITYPE.EQ.3) THEN @@ -221,6 +256,15 @@ CONTAINS IF(IPAR(2).GT.0) ICOUNT(IPAR(2),IM)=ICOUNT(IPAR(2),IM)+1 IF(IPAR(3).GT.0) ICOUNT(IPAR(3),IM)=ICOUNT(IPAR(3),IM)+1 ENDIF + ELSE IF(ITNODE(IM).EQ.3) THEN + ! the quadrilateral is represented as two triangles + DO ITRI=1,2 + TLAMB1=EDIBAR(NODE((ITRI-1)*2+1:(ITRI-1)*2+6,IM),CX,CY) + IF((TLAMB1(1).GE.-EPS).AND.(TLAMB1(2).GE.-EPS).AND.(TLAMB1(3).GE.-EPS)) THEN + IF(IPAR(2).GT.0) ICOUNT(IPAR(2),IM)=ICOUNT(IPAR(2),IM)+1 + IF(IPAR(3).GT.0) ICOUNT(IPAR(3),IM)=ICOUNT(IPAR(3),IM)+1 + ENDIF + ENDDO ENDIF ENDDO ENDIF diff --git a/doc/IGE335/Section3.08.tex b/doc/IGE335/Section3.08.tex index e0abf57..0bae9b8 100644 --- a/doc/IGE335/Section3.08.tex +++ b/doc/IGE335/Section3.08.tex @@ -59,7 +59,8 @@ is set in data structure \dstr{descedi}. $[$ \moc{EDIT} \dusa{iprint} $]$ \\ $[$ \moc{UPS} $]$ \\ $[$ \moc{MERG} $\{$ \moc{NONE} $|$ \moc{COMP} $|$ \moc{GEO} $|$ \moc{HMIX} $|$ \\ -\hskip 0.8cm \moc{G2S} \dusa{nhom} $[[$ \moc{RECT} \dusa{xm} \dusa{xp} \dusa{ym} \dusa{yp} $]]~[[$ \moc{TRIA} \dusa{x1} \dusa{y1} \dusa{x2} \dusa{y2} \dusa{x3} \dusa{y3} $]]~[$ \moc{REMIX} (\dusa{imix2}(ii),ii=1,nhom) $]~|$ \\ +\hskip 0.8cm \moc{G2S} \dusa{nhom} $[[$ \moc{RECT} \dusa{xm} \dusa{xp} \dusa{ym} \dusa{yp} $]]~[[$ \moc{TRIA} \dusa{x1} \dusa{y1} \dusa{x2} \dusa{y2} \dusa{x3} \dusa{y3} $]]$ \\ +\hskip 1.6cm $[[$ \moc{QUAD} \dusa{x1} \dusa{y1} \dusa{x2} \dusa{y2} \dusa{x3} \dusa{y3} \dusa{x4} \dusa{y4} $]]~~[$ \moc{REMIX} (\dusa{imix2}(ii),ii=1,nhom) $]~|$ \\ \hskip 0.8cm \moc{CELL} $[~\{$ \moc{SYBIL} $|$ \moc{EXCELL} $|$ \moc{NXT} $|$ \moc{DEFAULT} $|$ \moc{UNFOLD} $\}~]~[$ \moc{REMIX} (\dusa{imix2}(ii),ii=1,nbmix2) $]~|$ \\ \hskip 0.8cm \moc{REGI} (\dusa{iregm}(ii),ii=1,nregio) $|$ \\ \hskip 0.8cm \moc{MIX} $[$ (\dusa{imixm}(ii),ii=1,nbmix) $]~\}$ $]$ \\ @@ -179,6 +180,8 @@ repeating the \moc{RECT} and/or \moc{TRIA} data structures. \item[\moc{TRIA}] keyword used to specify a unique homogeneous mixture based on a triangular node. +\item[\moc{QUAD}] keyword used to specify a unique homogeneous mixture based on a quadrilateral node. In this case, the corner list must be provided in clockwise or anticlockwise order. + \item[\dusa{x1}] X--coordinate of the first corner. \item[\dusa{y1}] Y--coordinate of the first corner. @@ -191,6 +194,10 @@ repeating the \moc{RECT} and/or \moc{TRIA} data structures. \item[\dusa{y3}] Y--coordinate of the third corner. +\item[\dusa{x4}] X--coordinate of the fourth corner of a quadrilateral. + +\item[\dusa{y4}] Y--coordinate of the fourth corner of a quadrilateral. + \item[\moc{HMIX}] keyword used to specify that the homogenization region will be selected using the information provided by the \moc{HMIX} option in the \moc{GEO:} module (see \Sect{descPP}). In this case, all the regions associated with a virtual homogenization mixture will be homogenized. If the virtual homogenization mixtures were not defined in the geometry, the real mixtures are used instead (see \moc{MIX} keyword in \Sect{descPP}). This option is valid only for \moc{NXT:} based \dds{tracking} data structure (this option uses the information stored on the reference \dds{TRKNAM} data structure). \item[\moc{CELL}] keyword used to specify that the a cell-by-cell homogenization |
