diff --git a/Source/LK1/L1A-CC/CHK_CC_CMD_DESCRIBERS.f90 b/Source/LK1/L1A-CC/CHK_CC_CMD_DESCRIBERS.f90 index 1acd1f4e..5ffe93e4 100644 --- a/Source/LK1/L1A-CC/CHK_CC_CMD_DESCRIBERS.f90 +++ b/Source/LK1/L1A-CC/CHK_CC_CMD_DESCRIBERS.f90 @@ -32,7 +32,7 @@ SUBROUTINE CHK_CC_CMD_DESCRIBERS ( WHAT, NUM_WORDS ) USE PENTIUM_II_KIND, ONLY : BYTE, LONG USE IOUNT1, ONLY : WRT_ERR, ERR, F06 - USE SCONTR, ONLY : BLNK_SUB_NAM, CC_CMD_DESCRIBERS, ECHO, FATAL_ERR, WARN_ERR + USE SCONTR, ONLY : BLNK_SUB_NAM, CC_CMD_DESCRIBERS, ECHO, FATAL_ERR, WARN_ERR, NSUB USE TIMDAT, ONLY : TSEC USE CC_OUTPUT_DESCRIBERS, ONLY : STRN_LOC, STRN_OPT, STRE_LOC, STRE_OPT, FORC_LOC USE PARAMS, ONLY : SUPWARN @@ -292,13 +292,14 @@ SUBROUTINE CHK_CC_CMD_DESCRIBERS ( WHAT, NUM_WORDS ) DO I=1,NUM_WORDS - ! TODO: CEN is valid for CENTER (test this) - IF (CC_CMD_DESCRIBERS(I)(1:6) == 'CENTER') THEN - STRE_LOC = 'CENTER' - ELSE IF (CC_CMD_DESCRIBERS(I)(1:6) == 'CORNER') THEN - STRE_LOC = 'CORNER' - ELSE IF (CC_CMD_DESCRIBERS(I)(1:5) == 'BILIN' ) THEN - STRE_LOC = 'CORNER' + IF (NSUB <= 1) THEN + IF (CC_CMD_DESCRIBERS(I)(1:6) == 'CENTER') THEN + STRE_LOC = 'CENTER' + ELSE IF (CC_CMD_DESCRIBERS(I)(1:6) == 'CORNER') THEN + STRE_LOC = 'CORNER' + ELSE IF (CC_CMD_DESCRIBERS(I)(1:5) == 'BILIN' ) THEN + STRE_LOC = 'CORNER' + ENDIF ENDIF ! TODO: MISES is valid for VONMISES (test this...) @@ -317,13 +318,15 @@ SUBROUTINE CHK_CC_CMD_DESCRIBERS ( WHAT, NUM_WORDS ) IF (WHAT == 'STRN' ) THEN DO I=1,NUM_WORDS - ! TODO: CEN is valid for CENTER (test this) - IF (CC_CMD_DESCRIBERS(I)(1:6) == 'CENTER') THEN - STRN_LOC = 'CENTER' - ELSE IF (CC_CMD_DESCRIBERS(I)(1:6) == 'CORNER') THEN - STRN_LOC = 'CORNER' - ELSE IF (CC_CMD_DESCRIBERS(I)(1:5) == 'BILIN' ) THEN - STRN_LOC = 'CORNER' + + IF (NSUB <= 1) THEN + IF (CC_CMD_DESCRIBERS(I)(1:6) == 'CENTER') THEN + STRN_LOC = 'CENTER' + ELSE IF (CC_CMD_DESCRIBERS(I)(1:6) == 'CORNER') THEN + STRN_LOC = 'CORNER' + ELSE IF (CC_CMD_DESCRIBERS(I)(1:5) == 'BILIN' ) THEN + STRN_LOC = 'CORNER' + ENDIF ENDIF ! TODO: MISES is valid for VONMISES (test this...) @@ -343,13 +346,14 @@ SUBROUTINE CHK_CC_CMD_DESCRIBERS ( WHAT, NUM_WORDS ) DO I=1,NUM_WORDS - ! TODO: CEN is valid for CENTER (test this) - IF (CC_CMD_DESCRIBERS(I)(1:6) == 'CENTER') THEN - FORC_LOC = 'CENTER' - ELSE IF (CC_CMD_DESCRIBERS(I)(1:6) == 'CORNER') THEN - FORC_LOC = 'CORNER' - ELSE IF (CC_CMD_DESCRIBERS(I)(1:5) == 'BILIN' ) THEN - FORC_LOC = 'CORNER' + IF (NSUB <= 1) THEN + IF (CC_CMD_DESCRIBERS(I)(1:6) == 'CENTER') THEN + FORC_LOC = 'CENTER' + ELSE IF (CC_CMD_DESCRIBERS(I)(1:6) == 'CORNER') THEN + FORC_LOC = 'CORNER' + ELSE IF (CC_CMD_DESCRIBERS(I)(1:5) == 'BILIN' ) THEN + FORC_LOC = 'CORNER' + ENDIF ENDIF ENDDO diff --git a/Source/LK1/L1A/LOADC.f03 b/Source/LK1/L1A/LOADC.f03 index bf745678..0974f6e8 100644 --- a/Source/LK1/L1A/LOADC.f03 +++ b/Source/LK1/L1A/LOADC.f03 @@ -29,13 +29,13 @@ SUBROUTINE LOADC ! LOADC reads in the CASE CONTROL DECK USE PENTIUM_II_KIND, ONLY : BYTE, LONG, DOUBLE USE IOUNT1, ONLY : BUGOUT, ERR, F06, IN1, WRT_ERR - USE SCONTR, ONLY : BLNK_SUB_NAM, CC_ENTRY_LEN, ENFORCED, FATAL_ERR, WARN_ERR, NSUB, NTSUB, NUM_BUCKLING_SUBS, & - PROG_NAME, RESTART, SOL_NAME - USE TIMDAT, ONLY : TSEC + USE SCONTR, ONLY : CC_ENTRY_LEN, ENFORCED, FATAL_ERR, WARN_ERR, NSUB, NTSUB, & + NUM_BUCKLING_SUBS, PROG_NAME, RESTART, SOL_NAME, CC_CMD_DESCRIBERS USE PARAMS, ONLY : SUPINFO, SUPWARN USE MODEL_STUF, ONLY : CC_EIGR_SID, CC_EIGR_SID_SUB, CC_EIGR_SID_DECK, CC_STATSUB_DECK, CC_STATSUB_SUB, & IS_BUCKLING_SUBCASE, IS_MODES_SUBCASE, & - MEFFMASS_CALC, MPCSET, MPCSETS, MPFACTOR_CALC, SCNUM, SPCSET, SPCSETS, SUBLOD + MEFFMASS_CALC, MPCSET, MPCSETS, MPFACTOR_CALC, SCNUM, SPCSET, SPCSETS, SUBLOD, & + SC_STRE, SC_STRN, SC_ELFE, SC_ELFN USE MODEL_STUF, ONLY : EIG_PARAMS, & EIG_COMP, EIG_CRIT, EIG_FRQ1, EIG_FRQ2, EIG_GRID, EIG_LANCZOS_NEV_DELT, EIG_METH, & EIG_MSGLVL, EIG_LAP_MAT_TYPE, EIG_MODE, EIG_N1, EIG_N2, EIG_NCVFACL, EIG_NORM, EIG_SID, & @@ -47,8 +47,6 @@ SUBROUTINE LOADC IMPLICIT NONE - CHARACTER(LEN=LEN(BLNK_SUB_NAM)):: SUBR_NAME = 'LOADC' - CHARACTER( 1*BYTE) :: DOLLAR_WARN ! Indicator of whether there was a $ sign in col 1 CHARACTER(LEN=CC_ENTRY_LEN) :: CARD ! Case Control card CHARACTER(LEN=CC_ENTRY_LEN) :: CARD1 ! CARD shifted to begin in col 1 @@ -60,7 +58,7 @@ SUBROUTINE LOADC INTEGER(LONG) :: IERR ! Error indicator. If CHAR not found, IERR set to 1 INTEGER(LONG) :: IOCHK ! IOSTAT error number when reading a Case Control card from unit IN1 - + CHARACTER(LEN(CC_CMD_DESCRIBERS)) :: QUAD4_LOC ! ********************************************************************************************************************************** @@ -234,6 +232,25 @@ SUBROUTINE LOADC ENDDO outer + ! Assign the same CENTER/CORNER location to all of FORCE, + ! STRESS, and STRAIN outputs according to the priority rules. + ! Because NONE is stored as 0 in SC_STRE, etc., this treats + ! STRESS(CORNER) = NONE as if STRESS wasn't defined at + ! all and defaults to CENTER. + IF (SC_STRE(1) /= 0) THEN + QUAD4_LOC = STRE_LOC + ELSE IF (SC_STRN(1) /= 0) THEN + QUAD4_LOC = STRN_LOC + ELSE IF (SC_ELFE(1) /= 0 .OR. SC_ELFN(1) /= 0) THEN + QUAD4_LOC = FORC_LOC + ELSE + QUAD4_LOC = 'CENTER' + ENDIF + STRE_LOC = QUAD4_LOC + STRN_LOC = QUAD4_LOC + FORC_LOC = QUAD4_LOC + ! From here on, STRE_LOC = STRN_LOC = FORC_LOC. + IF (STRN_LOC /= 'CENTER ') THEN WRITE(ERR,1016) STRN_LOC, 'STRAIN' IF (SUPINFO == 'N') THEN @@ -471,8 +488,7 @@ SUBROUTINE LOADC 1015 FORMAT(' *WARNING : GRID POINT FORCE BALANCE ONLY ALLOWED IN ',A,' SOLUTION. ABOVE ENTRY IGNORED') - 1016 FORMAT(' *INFORMATION: ALL SUBCASES WILL USE "',A,'" AS THE LOCATION OF ',A,' OUTPUTS FOR PSHELL QUAD4 ELEMENTS' & - ,/,14X,' SINCE THIS WAS THE FIRST REQUEST, OTHER THAN DEFAULT "CENTER ", DETECTED') + 1016 FORMAT(' *INFORMATION: ALL SUBCASES WILL USE "',A,'" AS THE LOCATION OF ',A,' OUTPUTS FOR PSHELL QUAD4 ELEMENTS') 1028 FORMAT(' *ERROR 1028: THERE MUST BE 2 SUBCASES FOR LINEAR BUCKLING ANALYSES BUT NSUB = ',I8)