From 0be09053a106448984ca21070c3f88461bbad04d Mon Sep 17 00:00:00 2001 From: mcgratta Date: Sat, 7 Feb 2026 14:03:37 -0500 Subject: [PATCH] FDS Source: Padd U, V, W with extra row --- Source/ccib.f90 | 10 +++++----- Source/divg.f90 | 8 ++++---- Source/func.f90 | 4 ++-- Source/init.f90 | 15 +++++++++------ Source/mass.f90 | 34 +++++++++++++++++++++++----------- Source/mesh.f90 | 5 +++++ Source/wall.f90 | 2 +- 7 files changed, 49 insertions(+), 29 deletions(-) diff --git a/Source/ccib.f90 b/Source/ccib.f90 index aec0001097a..068528afefe 100644 --- a/Source/ccib.f90 +++ b/Source/ccib.f90 @@ -57,8 +57,8 @@ MODULE CC_SCALARS REAL(EB), ALLOCATABLE, DIMENSION(:,:):: DELTA_UNKZ REAL(EB), ALLOCATABLE, DIMENSION(:,:):: F_Z0, RZ_Z0 -REAL(EB), DIMENSION(0:3,0:3,0:3) :: U_TEMP,F_TEMP -REAL(EB), DIMENSION(-1:3,-1:3,-1:3) :: Z_TEMP +REAL(EB), DIMENSION(0:3,0:3,0:3) :: F_TEMP +REAL(EB), DIMENSION(-1:3,-1:3,-1:3) :: U_TEMP,Z_TEMP ! Types of interpolation: INTEGER, PARAMETER :: CC_LINEAR_INTERPOLATION = 1 @@ -11719,9 +11719,9 @@ SUBROUTINE GET_EXPLICIT_ADVDIFFVECTOR_SCALAR_3D(N) CALL POINT_TO_MESH(NM) - UU=>WORK1 - VV=>WORK2 - WW=>WORK3 + UU=>WORK_U + VV=>WORK_V + WW=>WORK_W IF (PREDICTOR) THEN ZZP => ZZ diff --git a/Source/divg.f90 b/Source/divg.f90 index 3809e1205ee..3b51c2a998f 100644 --- a/Source/divg.f90 +++ b/Source/divg.f90 @@ -792,8 +792,8 @@ SUBROUTINE ENTHALPY_ADVECTION_NEW(U_DOT_DEL_RHO_H_S) REAL(EB), POINTER, DIMENSION(:,:,:) :: FX_H_S,FY_H_S,FZ_H_S,RHO_H_S_P,U_DOT_DEL_RHO_H_S REAL(EB) :: UN,UN_P,TMP_F_GAS,DU_P,DU_M,DV_P,DV_M,DW_P,DW_M,DU,H_S REAL(EB), ALLOCATABLE, DIMENSION(:) :: ZZ_GET -REAL(EB), DIMENSION(0:3,0:3,0:3) :: U_TEMP,F_TEMP -REAL(EB), DIMENSION(-1:3,-1:3,-1:3) :: Z_TEMP +REAL(EB), DIMENSION(0:3,0:3,0:3) :: F_TEMP +REAL(EB), DIMENSION(-1:3,-1:3,-1:3) :: U_TEMP,Z_TEMP INTEGER :: IC,I,J,K,IW TYPE(WALL_TYPE), POINTER :: WC TYPE(BOUNDARY_COORD_TYPE), POINTER :: BC @@ -973,8 +973,8 @@ SUBROUTINE SPECIES_ADVECTION_PART_1_NEW REAL(EB), POINTER, DIMENSION(:,:,:) :: RHO_Z_P,RHO_RMW REAL(EB), POINTER, DIMENSION(:,:,:,:) :: FX_ZZ,FY_ZZ,FZ_ZZ REAL(EB) :: ZZ_GET(1:N_TRACKED_SPECIES),MW_G -REAL(EB), DIMENSION(0:3,0:3,0:3) :: U_TEMP,F_TEMP -REAL(EB), DIMENSION(-1:3,-1:3,-1:3) :: Z_TEMP +REAL(EB), DIMENSION(0:3,0:3,0:3) :: F_TEMP +REAL(EB), DIMENSION(-1:3,-1:3,-1:3) :: U_TEMP,Z_TEMP INTEGER :: I,J,K,IW,N !,II,JJ,KK,IOR,IC,IIG,JJG,KKG TYPE(WALL_TYPE), POINTER :: WC TYPE(BOUNDARY_COORD_TYPE), POINTER :: BC diff --git a/Source/func.f90 b/Source/func.f90 index 92f806cd196..badb028bb2b 100644 --- a/Source/func.f90 +++ b/Source/func.f90 @@ -1293,8 +1293,8 @@ END FUNCTION F_B SUBROUTINE GET_SCALAR_FACE_VALUE(A,U,F,I1,I2,J1,J2,K1,K2,IOR,LIMITER) USE GLOBAL_CONSTANTS, ONLY: CENTRAL_LIMITER,GODUNOV_LIMITER,MINMOD_LIMITER,SUPERBEE_LIMITER,CHARM_LIMITER,MP5_LIMITER -REAL(EB), INTENT(IN) :: A(0:,0:,0:),U(-1:,-1:,-1:) -REAL(EB), INTENT(OUT) :: F(0:,0:,0:) +REAL(EB), INTENT(IN), DIMENSION(-1:,-1:,-1:) :: A,U +REAL(EB), INTENT(OUT), DIMENSION(0:,0:,0:) :: F INTEGER, INTENT(IN) :: LIMITER,I1,I2,J1,J2,K1,K2,IOR REAL(EB) :: R,B,DU_UP,DU_LOC,V(-2:2) INTEGER :: I,J,K,IM1,JM1,KM1,IP1,JP1,KP1,IP2,JP2,KP2 diff --git a/Source/init.f90 b/Source/init.f90 index 9d000f81183..83122e404b4 100644 --- a/Source/init.f90 +++ b/Source/init.f90 @@ -531,12 +531,15 @@ SUBROUTINE INITIALIZE_MESH_VARIABLES_1(DT,NM) ! Regular 3D arrays -ALLOCATE(M%U(0:IBP1,0:JBP1,0:KBP1),STAT=IZERO) ; CALL ChkMemErr('INIT','U',IZERO) -ALLOCATE(M%V(0:IBP1,0:JBP1,0:KBP1),STAT=IZERO) ; CALL ChkMemErr('INIT','V',IZERO) -ALLOCATE(M%W(0:IBP1,0:JBP1,0:KBP1),STAT=IZERO) ; CALL ChkMemErr('INIT','W',IZERO) -ALLOCATE(M%US(0:IBP1,0:JBP1,0:KBP1),STAT=IZERO) ; CALL ChkMemErr('INIT','US',IZERO) -ALLOCATE(M%VS(0:IBP1,0:JBP1,0:KBP1),STAT=IZERO) ; CALL ChkMemErr('INIT','VS',IZERO) -ALLOCATE(M%WS(0:IBP1,0:JBP1,0:KBP1),STAT=IZERO) ; CALL ChkMemErr('INIT','WS',IZERO) +ALLOCATE(M%U(-1:IBP1,-1:JBP1,-1:KBP1),STAT=IZERO) ; CALL ChkMemErr('INIT','U',IZERO) +ALLOCATE(M%V(-1:IBP1,-1:JBP1,-1:KBP1),STAT=IZERO) ; CALL ChkMemErr('INIT','V',IZERO) +ALLOCATE(M%W(-1:IBP1,-1:JBP1,-1:KBP1),STAT=IZERO) ; CALL ChkMemErr('INIT','W',IZERO) +ALLOCATE(M%US(-1:IBP1,-1:JBP1,-1:KBP1),STAT=IZERO) ; CALL ChkMemErr('INIT','US',IZERO) +ALLOCATE(M%VS(-1:IBP1,-1:JBP1,-1:KBP1),STAT=IZERO) ; CALL ChkMemErr('INIT','VS',IZERO) +ALLOCATE(M%WS(-1:IBP1,-1:JBP1,-1:KBP1),STAT=IZERO) ; CALL ChkMemErr('INIT','WS',IZERO) +ALLOCATE(M%WORK_U(-1:IBP1,-1:JBP1,-1:KBP1),STAT=IZERO) ; CALL ChkMemErr('INIT','WORK_U',IZERO) +ALLOCATE(M%WORK_V(-1:IBP1,-1:JBP1,-1:KBP1),STAT=IZERO) ; CALL ChkMemErr('INIT','WORK_V',IZERO) +ALLOCATE(M%WORK_W(-1:IBP1,-1:JBP1,-1:KBP1),STAT=IZERO) ; CALL ChkMemErr('INIT','WORK_W',IZERO) ALLOCATE(M%FVX(0:IBP1,0:JBP1,0:KBP1),STAT=IZERO) ; CALL ChkMemErr('INIT','FVX',IZERO) ALLOCATE(M%FVY(0:IBP1,0:JBP1,0:KBP1),STAT=IZERO) ; CALL ChkMemErr('INIT','FVY',IZERO) ALLOCATE(M%FVZ(0:IBP1,0:JBP1,0:KBP1),STAT=IZERO) ; CALL ChkMemErr('INIT','FVZ',IZERO) diff --git a/Source/mass.f90 b/Source/mass.f90 index d4e5d9fbe46..4047afcd1c4 100644 --- a/Source/mass.f90 +++ b/Source/mass.f90 @@ -24,8 +24,8 @@ SUBROUTINE MASS_FINITE_DIFFERENCES_NEW(NM) INTEGER, INTENT(IN) :: NM REAL(EB) :: TNOW,MW_F,MW_G,ZZ_GET(1:N_TRACKED_SPECIES) -REAL(EB), DIMENSION(0:3,0:3,0:3) :: U_TEMP,F_TEMP -REAL(EB), DIMENSION(-1:3,-1:3,-1:3) :: Z_TEMP +REAL(EB), DIMENSION(0:3,0:3,0:3) :: F_TEMP +REAL(EB), DIMENSION(-1:3,-1:3,-1:3) :: U_TEMP,Z_TEMP REAL(EB), PARAMETER :: DUMMY=0._EB INTEGER :: I,J,K,N,IOR,IW,IIG,JJG,KKG,II,JJ,KK,IC REAL(EB), POINTER, DIMENSION(:,:,:) :: UU,VV,WW,RHOP @@ -379,9 +379,9 @@ SUBROUTINE DENSITY(T,DT,NM) TNOW=CURRENT_TIME() CALL POINT_TO_MESH(NM) -UU=>WORK1 -VV=>WORK2 -WW=>WORK3 +UU=>WORK_U +VV=>WORK_V +WW=>WORK_W DEL_RHO_D_DEL_Z__0=>SWORK4 PREDICTOR_STEP: SELECT CASE (PREDICTOR) @@ -443,9 +443,15 @@ SUBROUTINE DENSITY(T,DT,NM) IF (CC_IBM) CALL SET_EXIMADVFLX_3D(NM,UU,VV,WW) IF (STORE_SPECIES_FLUX) THEN DO N=1,N_TOTAL_SCALARS - ADV_FX(:,:,:,N) = FX(:,:,:,N)*UU(:,:,:) - ADV_FY(:,:,:,N) = FY(:,:,:,N)*VV(:,:,:) - ADV_FZ(:,:,:,N) = FZ(:,:,:,N)*WW(:,:,:) + DO K=0,KBAR + DO J=0,JBAR + DO I=0,IBAR + ADV_FX(I,J,K,N) = FX(I,J,K,N)*UU(I,J,K) + ADV_FY(I,J,K,N) = FY(I,J,K,N)*VV(I,J,K) + ADV_FZ(I,J,K,N) = FZ(I,J,K,N)*WW(I,J,K) + ENDDO + ENDDO + ENDDO ENDDO ENDIF @@ -625,9 +631,15 @@ SUBROUTINE DENSITY(T,DT,NM) IF (CC_IBM) CALL SET_EXIMADVFLX_3D(NM,UU,VV,WW) IF (STORE_SPECIES_FLUX) THEN DO N=1,N_TOTAL_SCALARS - ADV_FX(:,:,:,N) = 0.5_EB*( ADV_FX(:,:,:,N) + FX(:,:,:,N)*UU(:,:,:) ) - ADV_FY(:,:,:,N) = 0.5_EB*( ADV_FY(:,:,:,N) + FY(:,:,:,N)*VV(:,:,:) ) - ADV_FZ(:,:,:,N) = 0.5_EB*( ADV_FZ(:,:,:,N) + FZ(:,:,:,N)*WW(:,:,:) ) + DO K=0,KBAR + DO J=0,JBAR + DO I=0,IBAR + ADV_FX(I,J,K,N) = 0.5_EB*( ADV_FX(I,J,K,N) + FX(I,J,K,N)*UU(I,J,K) ) + ADV_FY(I,J,K,N) = 0.5_EB*( ADV_FY(I,J,K,N) + FY(I,J,K,N)*VV(I,J,K) ) + ADV_FZ(I,J,K,N) = 0.5_EB*( ADV_FZ(I,J,K,N) + FZ(I,J,K,N)*WW(I,J,K) ) + ENDDO + ENDDO + ENDDO ENDDO ENDIF diff --git a/Source/mesh.f90 b/Source/mesh.f90 index 938cd3ee08e..73dde934e35 100644 --- a/Source/mesh.f90 +++ b/Source/mesh.f90 @@ -120,6 +120,7 @@ MODULE MESH_VARIABLES REAL(EB), ALLOCATABLE, DIMENSION(:,:,:) :: WORK1,WORK2,WORK3,WORK4,WORK5,WORK6,WORK7,WORK8,WORK9 INTEGER, ALLOCATABLE, DIMENSION(:,:,:) :: IWORK1 REAL(EB), ALLOCATABLE, DIMENSION(:,:,:) :: WORK_PAD + REAL(EB), ALLOCATABLE, DIMENSION(:,:,:) :: WORK_U,WORK_V,WORK_W REAL(EB), ALLOCATABLE, DIMENSION(:,:,:) :: PWORK1,PWORK2,PWORK3,PWORK4 COMPLEX(EB), ALLOCATABLE, DIMENSION(:,:,:) :: PWORK5,PWORK6,PWORK7,PWORK8 REAL(EB), ALLOCATABLE, DIMENSION(:,:,:) :: TURB_WORK1,TURB_WORK2,TURB_WORK3,TURB_WORK4 @@ -376,6 +377,7 @@ MODULE MESH_POINTERS REAL(EB), POINTER, DIMENSION(:,:,:) :: WORK1,WORK2,WORK3,WORK4,WORK5,WORK6,WORK7,WORK8,WORK9 INTEGER, POINTER, DIMENSION(:,:,:) :: IWORK1 REAL(EB), POINTER, DIMENSION(:,:,:) :: WORK_PAD +REAL(EB), POINTER, DIMENSION(:,:,:) :: WORK_U,WORK_V,WORK_W REAL(EB), POINTER, DIMENSION(:,:,:) :: PWORK1,PWORK2,PWORK3,PWORK4 COMPLEX(EB), POINTER, DIMENSION(:,:,:) :: PWORK5,PWORK6,PWORK7,PWORK8 @@ -626,6 +628,9 @@ SUBROUTINE POINT_TO_MESH(NM) WORK9=>M%WORK9 IWORK1=>M%IWORK1 WORK_PAD=>M%WORK_PAD +WORK_U=>M%WORK_U +WORK_V=>M%WORK_V +WORK_W=>M%WORK_W PWORK1=>M%PWORK1 PWORK2=>M%PWORK2 PWORK3=>M%PWORK3 diff --git a/Source/wall.f90 b/Source/wall.f90 index ee0378c8a1c..4307ff189f1 100644 --- a/Source/wall.f90 +++ b/Source/wall.f90 @@ -600,7 +600,7 @@ END SUBROUTINE GET_TRILINEAR_WEIGHTS SUBROUTINE SURFACE_HEAT_TRANSFER(NM,T,SF,BC,B1,WALL_INDEX,CFACE_INDEX,PARTICLE_INDEX) -USE MATH_FUNCTIONS, ONLY: EVALUATE_RAMP,INTERPOLATE1D_UNIFORM,GET_SCALAR_FACE_VALUE +USE MATH_FUNCTIONS, ONLY: EVALUATE_RAMP,INTERPOLATE1D_UNIFORM USE PHYSICAL_FUNCTIONS, ONLY : GET_SPECIFIC_GAS_CONSTANT,GET_VISCOSITY,GET_MOLECULAR_WEIGHT USE DEVICE_VARIABLES, ONLY : PROPERTY,PROPERTY_TYPE