Skip to content

Commit 1c31919

Browse files
authored
Merge pull request #14823 from shostikk/master
Surf layer delamination (fall-off), based on density or temperature
2 parents 1d44880 + a435c9e commit 1c31919

File tree

3 files changed

+48
-8
lines changed

3 files changed

+48
-8
lines changed

Source/read.f90

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7809,7 +7809,8 @@ SUBROUTINE READ_SURF(QUICK_READ)
78097809
DRAG_COEFFICIENT,MINIMUM_BURNOUT_TIME,DELTA_TMP_MAX,BURN_DURATION,&
78107810
REFERENCE_HEAT_FLUX(MAX_QDOTPP_REF),REFERENCE_HEAT_FLUX_TIME_INTERVAL,MINIMUM_SCALING_HEAT_FLUX,&
78117811
MAXIMUM_SCALING_HEAT_FLUX,REFERENCE_THICKNESS(MAX_QDOTPP_REF),&
7812-
AREA_MULTIPLIER,Z_0,PARTICLE_EXTRACTION_VELOCITY,NEAR_WALL_EDDY_VISCOSITY
7812+
AREA_MULTIPLIER,Z_0,PARTICLE_EXTRACTION_VELOCITY,NEAR_WALL_EDDY_VISCOSITY,&
7813+
FALLOFF_TMP(MAX_LAYERS),FALLOFF_DENSITY(MAX_LAYERS)
78137814
INTEGER :: NPPC,N,IOS,NL,NN,NNN,NNNN,N_LIST,LEAK_PATH(2),DUCT_PATH(2),RGB(3),NR,IL
78147815
INTEGER :: N_LAYER_CELLS_MAX(MAX_LAYERS),VEG_LSET_FUEL_INDEX,INDEX_LIST(MAX_MATERIALS**2)
78157816
INTEGER :: CHILD_LAYER(MAX_LAYERS,N_MATL),CHILD_SURF(N_MATL)
@@ -7828,6 +7829,7 @@ SUBROUTINE READ_SURF(QUICK_READ)
78287829
DSC_CONVERSION_FACTOR,DT_INSERT,E_COEFFICIENT,&
78297830
EMBER_GENERATION_HEIGHT,EMBER_IGNITION_POWER_MEAN,EMBER_IGNITION_POWER_SIGMA,EMBER_TRACKING_RATIO,EMBER_YIELD,&
78307831
EMISSIVITY,EMISSIVITY_BACK,EXTERNAL_FLUX,EXTINCTION_TEMPERATURE,&
7832+
FALLOFF_DENSITY,FALLOFF_TMP,&
78317833
FREE_SLIP,INERT_Q_REF,FYI,GEOMETRY,HEAT_OF_VAPORIZATION,&
78327834
HEAT_TRANSFER_COEFFICIENT,HEAT_TRANSFER_COEFFICIENT_BACK,HEAT_TRANSFER_COEFFICIENT_SIGMA,&
78337835
HEAT_TRANSFER_MODEL,HORIZONTAL,HRRPUA,VARIABLE_THICKNESS,HT3D,ID,IGNITION_TEMPERATURE,&
@@ -8761,6 +8763,16 @@ SUBROUTINE READ_SURF(QUICK_READ)
87618763
ENDIF
87628764
ENDDO
87638765

8766+
! Set delamination temperature and/or density
8767+
8768+
SF%FALLOFF_TMP = HUGE_EB
8769+
SF%FALLOFF_DENSITY = -1._EB
8770+
DO NL = 1,MAX_LAYERS
8771+
IF (FALLOFF_TMP(NL) > 0._EB) SF%FALLOFF_TMP(NL) = FALLOFF_TMP(NL) + TMPM
8772+
IF (FALLOFF_DENSITY(NL) > 0._EB) SF%FALLOFF_DENSITY(NL) = FALLOFF_DENSITY(NL)
8773+
ENDDO
8774+
8775+
87648776
! Adjust min and max temperature and convert C to K
87658777

87668778
IF (TMP_FRONT >= -TMPM) TMPMIN = MIN(TMPMIN,TMP_FRONT+TMPM)
@@ -8961,6 +8973,8 @@ SUBROUTINE SET_SURF_DEFAULTS
89618973
EXTERNAL_FLUX = 0._EB
89628974
EXTINCTION_TEMPERATURE = -273._EB
89638975
INERT_Q_REF = .FALSE.
8976+
FALLOFF_TMP = -1._EB
8977+
FALLOFF_DENSITY = -1._EB
89648978
FREE_SLIP = .FALSE.
89658979
FYI = 'null'
89668980
GEOMETRY = 'CARTESIAN'

Source/type.f90

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -964,7 +964,8 @@ MODULE TYPES
964964
REAL(EB), ALLOCATABLE, DIMENSION(:) :: CELL_SIZE !< Specified constant cell size (m)
965965
REAL(EB), ALLOCATABLE, DIMENSION(:) :: STRETCH_FACTOR
966966
REAL(EB), DIMENSION(MAX_LAYERS) :: LAYER_DENSITY,&
967-
MOISTURE_CONTENT,SURFACE_VOLUME_RATIO,PACKING_RATIO,KAPPA_S=-1._EB,RENODE_DELTA_T
967+
MOISTURE_CONTENT,SURFACE_VOLUME_RATIO,PACKING_RATIO,KAPPA_S=-1._EB,RENODE_DELTA_T
968+
REAL(EB), DIMENSION(MAX_LAYERS) :: FALLOFF_TMP,FALLOFF_DENSITY !< Temp. and density criteria for layer fall-off (delam.)
968969
REAL(EB), DIMENSION(MAX_LAYERS,MAX_MATERIALS) :: DENSITY_ADJUST_FACTOR=1._EB,RHO_S
969970
CHARACTER(LABEL_LENGTH), ALLOCATABLE, DIMENSION(:) :: MATL_NAME
970971
CHARACTER(LABEL_LENGTH), DIMENSION(MAX_LAYERS,MAX_MATERIALS) :: MATL_ID

Source/wall.f90

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2043,13 +2043,22 @@ SUBROUTINE SOLID_HEAT_TRANSFER(NM,T,DT_BC,PARTICLE_INDEX,WALL_INDEX,CFACE_INDEX,
20432043
B1%N_SUBSTEPS = 1
20442044
ONE_D%DELTA_TMP = 0._EB
20452045

2046+
! Compute number of cells and density vector
2047+
NWP = SUM(ONE_D%N_LAYER_CELLS(1:ONE_D%N_LAYERS))
2048+
RHO_S = 0._EB
2049+
DO I = 1,NWP
2050+
DO N=1,ONE_D%N_MATL
2051+
RHO_S(I)=RHO_S(I)+ONE_D%MATL_COMP(N)%RHO(I)
2052+
ENDDO
2053+
ENDDO
2054+
20462055
! Compute initial thermal properties for Fo number calculation
20472056
! CHECK_FO=F by default
20482057
! CHECK_FO=T enforces near explicit time step accuracy (Forward-Euler would require 1/2 DT_FO)
20492058

2059+
20502060
CHECK_FO_IF: IF (CHECK_FO) THEN
20512061
ONE_D%K_S = 0._EB
2052-
RHO_S = 0._EB
20532062
ONE_D%RHO_C_S = 0._EB
20542063
POINT_LOOP0: DO I=1,NWP
20552064
VOLSUM = 0._EB
@@ -2060,7 +2069,6 @@ SUBROUTINE SOLID_HEAT_TRANSFER(NM,T,DT_BC,PARTICLE_INDEX,WALL_INDEX,CFACE_INDEX,
20602069
VOLSUM = VOLSUM + ONE_D%MATL_COMP(N)%RHO(I)/RHO_ADJUSTED(LAYER_INDEX(I),N)
20612070
ONE_D%K_S(I) = ONE_D%K_S(I) + ONE_D%MATL_COMP(N)%RHO(I)*ML%K_S(ITMP)/RHO_ADJUSTED(LAYER_INDEX(I),N)
20622071
ONE_D%RHO_C_S(I) = ONE_D%RHO_C_S(I) + ONE_D%MATL_COMP(N)%RHO(I)*ML%C_S(ITMP)
2063-
RHO_S(I) = RHO_S(I) + ONE_D%MATL_COMP(N)%RHO(I)
20642072
ENDDO MATERIAL_LOOP0
20652073
IF (SF%PACKING_RATIO(LAYER_INDEX(I))>0._EB) ONE_D%K_S(I) = ONE_D%K_S(I)*SF%PACKING_RATIO(LAYER_INDEX(I))
20662074

@@ -2079,12 +2087,11 @@ SUBROUTINE SOLID_HEAT_TRANSFER(NM,T,DT_BC,PARTICLE_INDEX,WALL_INDEX,CFACE_INDEX,
20792087
LAYER_DIVIDE = SF%LAYER_DIVIDE
20802088

20812089
COMPUTE_GRID: IF (ONE_D%PYROLYSIS_MODEL==PYROLYSIS_PREDICTED .OR. SF%HT_DIM>1 .OR. SF%VARIABLE_THICKNESS) THEN
2082-
NWP = SUM(ONE_D%N_LAYER_CELLS(1:ONE_D%N_LAYERS))
20832090
CALL GET_WALL_NODE_WEIGHTS(NWP,ONE_D%N_LAYERS,ONE_D%N_LAYER_CELLS(1:ONE_D%N_LAYERS),ONE_D%LAYER_THICKNESS,SF%GEOMETRY, &
20842091
ONE_D%X(0:NWP),LAYER_DIVIDE,DX_S(1:NWP),RDX_S(0:NWP+1),RDXN_S(0:NWP),DX_WGT_S(0:NWP),DXF,DXB,&
20852092
LAYER_INDEX(0:NWP+1),MF_FRAC(1:NWP),SF%INNER_RADIUS,ONE_D%LAYER_DIVIDE_DEPTH)
20862093
ELSE COMPUTE_GRID
2087-
NWP = SF%N_CELLS_INI
2094+
! NWP = SF%N_CELLS_INI
20882095
DXF = SF%DXF
20892096
DXB = SF%DXB
20902097
DX_S(1:NWP) = SF%DX(1:NWP)
@@ -2413,6 +2420,25 @@ SUBROUTINE SOLID_HEAT_TRANSFER(NM,T,DT_BC,PARTICLE_INDEX,WALL_INDEX,CFACE_INDEX,
24132420

24142421
ENDDO POINT_LOOP2
24152422

2423+
! Delamination layer fall-off
2424+
2425+
I = 0
2426+
DO NL=1,ONE_D%N_LAYERS
2427+
IF (ONE_D%LAYER_THICKNESS(NL).GT.ONE_D%MIN_LAYER_THICKNESS(NL) .AND. &
2428+
(ONE_D%TMP(I+ONE_D%N_LAYER_CELLS(NL)) > SF%FALLOFF_TMP(NL)) .OR.&
2429+
( RHO_S(I+ONE_D%N_LAYER_CELLS(NL)) < SF%FALLOFF_DENSITY(NL))) THEN
2430+
REGRID_FACTOR(1:I+ONE_D%N_LAYER_CELLS(NL))=0._EB
2431+
ONE_D%RHO_C_S(1:I+ONE_D%N_LAYER_CELLS(NL))=0._EB
2432+
Q_S(1:I+ONE_D%N_LAYER_CELLS(NL))=0._EB
2433+
DO N=1,ONE_D%N_MATL
2434+
ONE_D%MATL_COMP(N)%RHO(1:I+ONE_D%N_LAYER_CELLS(NL))=0._EB
2435+
ENDDO
2436+
ONE_D%TMP(I+1:I+ONE_D%N_LAYER_CELLS(NL))=ONE_D%TMP(I+ONE_D%N_LAYER_CELLS(NL)+1)
2437+
B1%TMP_F = ONE_D%TMP(I+ONE_D%N_LAYER_CELLS(NL)+1)
2438+
ENDIF
2439+
I = I + ONE_D%N_LAYER_CELLS(NL)
2440+
ENDDO
2441+
24162442
! Compute new coordinates if the solid changes thickness. Save new coordinates in X_S_NEW.
24172443
! Remesh layer if any node goes to zero thickness
24182444

@@ -2465,7 +2491,7 @@ SUBROUTINE SOLID_HEAT_TRANSFER(NM,T,DT_BC,PARTICLE_INDEX,WALL_INDEX,CFACE_INDEX,
24652491
ENDIF
24662492
I = I + ONE_D%N_LAYER_CELLS(NL)
24672493
ENDDO
2468-
2494+
24692495
! If any nodes go to zero, apportion Q_S to surrounding nodes.
24702496

24712497
IF (ANY(CELL_ZERO(1:ONE_D%N_LAYERS)) .AND. NWP > 1) THEN
@@ -2661,7 +2687,6 @@ SUBROUTINE SOLID_HEAT_TRANSFER(NM,T,DT_BC,PARTICLE_INDEX,WALL_INDEX,CFACE_INDEX,
26612687
CALL INTERPOLATE_WALL_ARRAY(N_CELLS,NWP,NWP_NEW,INT_WGT,Q_S(1:N_CELLS))
26622688
CALL INTERPOLATE_WALL_ARRAY(N_CELLS,NWP,NWP_NEW,INT_WGT,RHO_H_S(1:N_CELLS))
26632689
CALL INTERPOLATE_WALL_ARRAY(N_CELLS,NWP,NWP_NEW,INT_WGT,TMP_S(1:N_CELLS))
2664-
26652690
DO I=1,NWP_NEW
26662691
VOL = (THICKNESS+SF%INNER_RADIUS-X_S_NEW(I-1))**I_GRAD-(THICKNESS+SF%INNER_RADIUS-X_S_NEW(I))**I_GRAD
26672692
TMP_S(I) = TMP_S(I) / VOL

0 commit comments

Comments
 (0)