From fd2671c00d2aa6659d51cd676d9d0a01016cd248 Mon Sep 17 00:00:00 2001 From: Alain Hebert Date: Sun, 19 Oct 2025 11:39:22 +0200 Subject: #8: Improve epsilon tests and error detection in module SALT: --- Dragon/src/SAL_GEOMETRY_MOD.f90 | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) (limited to 'Dragon/src/SAL_GEOMETRY_MOD.f90') diff --git a/Dragon/src/SAL_GEOMETRY_MOD.f90 b/Dragon/src/SAL_GEOMETRY_MOD.f90 index 1056016..4bce6e8 100644 --- a/Dragon/src/SAL_GEOMETRY_MOD.f90 +++ b/Dragon/src/SAL_GEOMETRY_MOD.f90 @@ -16,7 +16,7 @@ MODULE SAL_GEOMETRY_MOD USE SAL_GEOMETRY_TYPES USE PRECISION_AND_KINDS, ONLY : PDB, PI,TWOPI,HALFPI - USE SAL_NUMERIC_MOD, ONLY : SAL141 + USE SAL_NUMERIC_MOD, ONLY : SAL141 USE SALGET_FUNS_MOD CONTAINS @@ -341,7 +341,7 @@ CONTAINS ! !--------------------------------------------------------------------- ! - USE SAL_GEOMETRY_TYPES, ONLY : ALLSUR,PREC + USE SAL_GEOMETRY_TYPES, ONLY : TYPGEO,ALLSUR,PREC !**** IMPLICIT NONE ! in variable @@ -351,6 +351,7 @@ CONTAINS INTEGER, PARAMETER :: N_DATAIN=25 INTEGER, DIMENSION (N_DATAIN) :: DATAIN INTEGER :: ELEM,I,TYPE,NBER + CHARACTER(LEN=131) :: HSMG INTEGER, PARAMETER, DIMENSION(0:4) :: READ_BC_LEN=(/1,1,3,3,3/) INTEGER, PARAMETER :: FOUT =6 REAL(PDB) :: ANGLE,BCDATA_TDT(3) @@ -409,9 +410,43 @@ CONTAINS GG%BCDATAREAD(I)%BCDATA(6)=1._PDB LBCDIAG=LBCDIAG.OR.((GG%BCDATAREAD(I)%BCDATA(1)==0._PDB).AND.(GG%BCDATAREAD(I)%BCDATA(2)==0._PDB) & .AND.(GG%BCDATAREAD(I)%BCDATA(5)==PI/4._PDB)) + IF((TYPGEO.EQ.3).OR.(TYPGEO.EQ.6).OR.(TYPGEO.EQ.6)) THEN + IF((ANGLE/=0.0).AND.(ANGLE/=PI/2._PDB)) THEN + WRITE(HSMG,100) ANGLE,I,TYPGEO + CALL XABORT(HSMG) + ENDIF + ELSE IF(TYPGEO.EQ.7) THEN + IF((ANGLE/=0.0).AND.(ANGLE/=PI/2._PDB).AND.(ANGLE/=PI/4._PDB)) THEN + WRITE(HSMG,100) ANGLE,I,TYPGEO + CALL XABORT(HSMG) + ENDIF + ELSE IF((TYPGEO.EQ.8).OR.(TYPGEO.EQ.10)) THEN + IF((ANGLE/=0.0).AND.(ANGLE/=PI/3._PDB).AND.(ANGLE/=2._PDB*PI/3._PDB)) THEN + WRITE(HSMG,100) ANGLE,I,TYPGEO + CALL XABORT(HSMG) + ENDIF + ELSE IF(TYPGEO.EQ.9) THEN + IF((ANGLE/=0.0).AND.(ANGLE/=PI/6._PDB).AND.(ANGLE/=2._PDB*PI/3._PDB).AND. & + & (ANGLE/=PI).AND.(ANGLE/=7._PDB*PI/6._PDB).AND.(ANGLE/=5._PDB*PI/3._PDB)) THEN + WRITE(HSMG,100) ANGLE,I,TYPGEO + CALL XABORT(HSMG) + ENDIF + ELSE IF(TYPGEO.EQ.11) THEN + IF((ANGLE/=0.0).AND.(ANGLE/=PI/3._PDB)) THEN + WRITE(HSMG,100) ANGLE,I,TYPGEO + CALL XABORT(HSMG) + ENDIF + ELSE IF(TYPGEO.EQ.12) THEN + IF((ANGLE/=0.0).AND.(ANGLE/=PI/6._PDB).AND.(ANGLE/=2._PDB*PI/3._PDB)) THEN + WRITE(HSMG,100) ANGLE,I,TYPGEO + CALL XABORT(HSMG) + ENDIF + ENDIF ENDIF ENDDO ENDIF + 100 FORMAT(34HSALINP: FORBIDDEN PERIMETER ANGLE=,1P,E13.4,18H RADIANS FOR SIDE=,I3, & + & 12H AND TYPGEO=,I3,1H.) END SUBROUTINE SALINP ! SUBROUTINE SAL126(RPAR,IPAR) -- cgit v1.2.3