Skip to content

Commit ce4cf98

Browse files
authored
Merge pull request #14822 from cxp484/FireX
FireX: Merge with firemodels/master
2 parents 29b48d4 + 9ec0f0b commit ce4cf98

File tree

14 files changed

+775
-117
lines changed

14 files changed

+775
-117
lines changed

.github/workflows/cmake.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ name: cmake
22
env:
33
# update urls for oneapi packages according to
44
# https://github.com/oneapi-src/oneapi-ci/blob/master/.github/workflows/build_all.yml
5-
WINDOWS_BASEKIT_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ae29263e-38b9-4d43-86c3-376d6e0668e7/intel-oneapi-base-toolkit-2025.0.1.47_offline.exe
5+
WINDOWS_BASEKIT_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/09a8acaf-265f-4460-866c-a3375ed5b4ff/intel-oneapi-base-toolkit-2025.2.0.591_offline.exe
66
WINDOWS_BASEKIT_COMPONENTS: intel.oneapi.win.mkl.devel
7-
WINDOWS_HPCKIT_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/a37c30c3-a846-4371-a85d-603e9a9eb94c/intel-oneapi-hpc-toolkit-2025.0.1.48_offline.exe
7+
WINDOWS_HPCKIT_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/3bbdaf75-6728-492e-a18c-be654dae9ee2/intel-oneapi-hpc-toolkit-2025.2.0.576_offline.exe
88
WINDOWS_HPCKIT_COMPONENTS: intel.oneapi.win.ifort-compiler:intel.oneapi.win.mpi.devel
99

1010
on:
@@ -79,10 +79,10 @@ jobs:
7979
# if: endsWith(matrix.compiler_mpi, '_intelmpi')
8080
with:
8181
components: |
82-
ifx@2025.0.1
83-
icx@2025.0.1
84-
impi@2021.14.1
85-
mkl@2025.0.1
82+
ifx
83+
icx
84+
impi
85+
mkl
8686
8787
- name: install openmpi
8888
if: endsWith(matrix.compiler_mpi, '_openmpi') && (startsWith(matrix.container, 'rockylinux') || startsWith(matrix.container, 'fedora'))

.github/workflows/linux.yml

Lines changed: 27 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -34,53 +34,27 @@ jobs:
3434
- uses: rscohn2/setup-oneapi@v0
3535
with:
3636
components: |
37-
ifx@2025.0.1
38-
impi@2021.14.1
39-
mkl@2025.0.1
37+
ifx
38+
impi
39+
mkl
4040
prune: false
4141

4242
- uses: actions/checkout@v4
4343

44-
- name: Check Current Memory Limit
45-
run: ulimit -a # Check the memory limits
46-
47-
- name: free -h command
48-
run: free -h
49-
5044
- name: build fds debug
5145
run: |
5246
source /opt/intel/oneapi/setvars.sh
5347
cd ./Build/impi_intel_linux_db
5448
./make_fds.sh
5549
./fds_impi_intel_linux_db
5650
57-
- name: free -h command
58-
run: free -h
59-
6051
- name: build fds release
61-
if: false # skip this run until ifx issue is sorted out
6252
run: |
6353
source /opt/intel/oneapi/setvars.sh
6454
cd ./Build/impi_intel_linux
6555
./make_fds.sh
6656
./fds_impi_intel_linux
6757
68-
- name: free -h command
69-
run: free -h
70-
71-
# Setup python
72-
- uses: actions/setup-python@v5
73-
with:
74-
python-version: '3.9'
75-
cache: 'pip' # caching pip dependencies
76-
- run: pip install -r .github/requirements.txt
77-
78-
# Run Hello World test
79-
- name: Python test
80-
run: |
81-
echo $GITHUB_WORKSPACE
82-
cd $GITHUB_WORKSPACE/Utilities/Python
83-
python hello_world.py
8458
8559
linux-gnu-openmpi:
8660
# build on ubuntu using gfortran with openmpi and mkl based on
@@ -97,7 +71,7 @@ jobs:
9771
- uses: rscohn2/setup-oneapi@v0
9872
with:
9973
components: |
100-
mkl
74+
mkl@2025.1.0
10175
prune: false
10276

10377
- uses: actions/checkout@v4
@@ -113,3 +87,26 @@ jobs:
11387
cd ./Build/ompi_gnu_linux
11488
./make_fds.sh
11589
./fds_ompi_gnu_linux
90+
91+
92+
linux-python-helloworld:
93+
# Run Hello World test
94+
95+
name: linux python helloworld
96+
runs-on: [ubuntu-latest]
97+
98+
steps:
99+
- uses: actions/checkout@v4
100+
101+
- uses: actions/setup-python@v5
102+
with:
103+
python-version: '3.9'
104+
cache: 'pip' # caching pip dependencies
105+
- run: pip install -r .github/requirements.txt
106+
107+
- name: Python test
108+
run: |
109+
echo $GITHUB_WORKSPACE
110+
cd $GITHUB_WORKSPACE/Utilities/Python
111+
python hello_world.py
112+
: # python FDS_verification_script.py

.github/workflows/windows.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ permissions:
2626
env:
2727
# update urls for oneapi packages according to
2828
# https://github.com/oneapi-src/oneapi-ci/blob/master/.github/workflows/build_all.yml
29-
WINDOWS_BASEKIT_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ae29263e-38b9-4d43-86c3-376d6e0668e7/intel-oneapi-base-toolkit-2025.0.1.47_offline.exe
29+
WINDOWS_BASEKIT_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/09a8acaf-265f-4460-866c-a3375ed5b4ff/intel-oneapi-base-toolkit-2025.2.0.591_offline.exe
3030
WINDOWS_BASEKIT_COMPONENTS: intel.oneapi.win.mkl.devel
31-
WINDOWS_HPCKIT_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/a37c30c3-a846-4371-a85d-603e9a9eb94c/intel-oneapi-hpc-toolkit-2025.0.1.48_offline.exe
31+
WINDOWS_HPCKIT_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/3bbdaf75-6728-492e-a18c-be654dae9ee2/intel-oneapi-hpc-toolkit-2025.2.0.576_offline.exe
3232
WINDOWS_HPCKIT_COMPONENTS: intel.oneapi.win.ifort-compiler:intel.oneapi.win.mpi.devel
3333

3434

Manuals/Copy_Firebot_Figures.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ USE_SSH=
99
# set firebot host to spark
1010
# if using USE_SSH=1 over VPN add user name to HOST, e.g., [email protected]
1111
HOST=spark.nist.gov
12-
HOSTDIR=/home/firebot/.firebot
12+
HOSTDIR=/home/firebot/FireModels_clone/fds
1313

1414
# shouldn't have to change lines below
1515

Source/func.f90

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3058,6 +3058,24 @@ SUBROUTINE REALLOCATE_INTEGER_ARRAY(P,N1,N2,N3)
30583058
END SUBROUTINE REALLOCATE_INTEGER_ARRAY
30593059

30603060

3061+
!> \brief Change the allocation of an logical array with DIMENSION 1
3062+
!> \param P Original array
3063+
!> \param N1 Lower bound of old/new allocation
3064+
!> \param N2 Upper bound of old allocation
3065+
!> \param N3 Upper bound of new allocation
3066+
3067+
SUBROUTINE REALLOCATE_LOGICAL_ARRAY(P,N1,N2,N3)
3068+
3069+
LOGICAL, ALLOCATABLE, DIMENSION(:) :: P,DUMMY
3070+
INTEGER, INTENT(IN) :: N1,N2,N3
3071+
3072+
ALLOCATE(DUMMY(N1:N3))
3073+
IF (ALLOCATED(P)) DUMMY(N1:N2) = P(N1:N2)
3074+
CALL MOVE_ALLOC(DUMMY,P)
3075+
3076+
END SUBROUTINE REALLOCATE_LOGICAL_ARRAY
3077+
3078+
30613079
!> \brief Changes the allocation of a string array
30623080
!> \param P Original array
30633081
!> \param CLEN Length of string

Source/init.f90

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1789,7 +1789,7 @@ SUBROUTINE INITIALIZE_HT3D_WALL_CELLS(NM)
17891789
USE GEOMETRY_FUNCTIONS, ONLY: SEARCH_OTHER_MESHES
17901790
INTEGER, INTENT(IN) :: NM
17911791
INTEGER :: I,IW,IW2,ITW,ITW2,NWP,NWP2,I2,IWA,DM,IOR,NOM,II,JJ,KK,NN,IC,NL
1792-
LOGICAL :: IOR_AVOID(-3:3)
1792+
LOGICAL :: IOR_AVOID(-3:3),FOUND
17931793
REAL(EB) :: X1,X2,Y1,Y2,Z1,Z2,XX1,XX2,YY1,YY2,ZZ1,ZZ2,PRIMARY_VOLUME,OVERLAP_VOLUME,DXX,DYY,DZZ,WEIGHT_FACTOR,&
17941794
SUM_WGT(3),XX,YY,ZZ,WEIGHT,TARGET_WEIGHT
17951795
TYPE(WALL_TYPE), POINTER :: WC
@@ -1799,6 +1799,7 @@ SUBROUTINE INITIALIZE_HT3D_WALL_CELLS(NM)
17991799
TYPE(BOUNDARY_THR_D_TYPE), POINTER :: THR_D
18001800
TYPE(BOUNDARY_COORD_TYPE), POINTER :: BC,BC2
18011801
TYPE(MESH_TYPE), POINTER :: M
1802+
TYPE(STORAGE_TYPE), POINTER :: OS
18021803
INTEGER, ALLOCATABLE, DIMENSION(:) :: INTEGER_DUMMY
18031804
REAL(EB), ALLOCATABLE, DIMENSION(:) :: REAL_DUMMY
18041805
REAL(EB), PARAMETER :: TOL=0.0001_EB
@@ -1894,13 +1895,17 @@ SUBROUTINE INITIALIZE_HT3D_WALL_CELLS(NM)
18941895

18951896
OTHER_MESH_LOOP: DO NOM=1,NMESHES
18961897
IF (NM==NOM) CYCLE
1897-
ALTERNATE_WALL_LOOP_2: DO NN=1,M%OMESH(NOM)%WALL_RECV_BUFFER%N_ITEMS
1898-
IW2 = M%OMESH(NOM)%WALL_RECV_BUFFER%ITEM_INDEX(NN)
1898+
OS => M%OMESH(NOM)%WALL_RECV_BUFFER
1899+
ALTERNATE_WALL_LOOP_2: DO NN=1,OS%N_ITEMS
1900+
IW2 = OS%ITEM_INDEX(NN)
18991901
CALL SEARCH_FOR_ALTERNATE_WALL_CELLS(NOM,WALL_INDEX=IW2)
1902+
IF (FOUND) OS%SAVE_FLAG(NN) = .TRUE.
19001903
ENDDO ALTERNATE_WALL_LOOP_2
1901-
ALTERNATE_WALL_LOOP_2D: DO NN=1,M%OMESH(NOM)%THIN_WALL_RECV_BUFFER%N_ITEMS ! THIN_WALL cells, neighboring meshes
1902-
ITW2 = M%OMESH(NOM)%THIN_WALL_RECV_BUFFER%ITEM_INDEX(NN)
1904+
OS => M%OMESH(NOM)%THIN_WALL_RECV_BUFFER
1905+
ALTERNATE_WALL_LOOP_2D: DO NN=1,OS%N_ITEMS ! THIN_WALL cells, neighboring meshes
1906+
ITW2 = OS%ITEM_INDEX(NN)
19031907
CALL SEARCH_FOR_ALTERNATE_WALL_CELLS(NOM,THIN_WALL_INDEX=ITW2)
1908+
IF (FOUND) OS%SAVE_FLAG(NN) = .TRUE.
19041909
ENDDO ALTERNATE_WALL_LOOP_2D
19051910
ENDDO OTHER_MESH_LOOP
19061911

@@ -1999,13 +2004,17 @@ SUBROUTINE INITIALIZE_HT3D_WALL_CELLS(NM)
19992004

20002005
OTHER_MESH_LOOP_B: DO NOM=1,NMESHES
20012006
IF (NM==NOM) CYCLE
2002-
ALTERNATE_WALL_LOOP_2B: DO NN=1,M%OMESH(NOM)%WALL_RECV_BUFFER%N_ITEMS ! WALL cells, neighboring meshes
2003-
IW2 = M%OMESH(NOM)%WALL_RECV_BUFFER%ITEM_INDEX(NN)
2007+
OS => M%OMESH(NOM)%WALL_RECV_BUFFER
2008+
ALTERNATE_WALL_LOOP_2B: DO NN=1,OS%N_ITEMS ! WALL cells, neighboring meshes
2009+
IW2 = OS%ITEM_INDEX(NN)
20042010
CALL SEARCH_FOR_ALTERNATE_WALL_CELLS(NOM,WALL_INDEX=IW2)
2011+
IF (FOUND) OS%SAVE_FLAG(NN) = .TRUE.
20052012
ENDDO ALTERNATE_WALL_LOOP_2B
2006-
ALTERNATE_WALL_LOOP_2C: DO NN=1,M%OMESH(NOM)%THIN_WALL_RECV_BUFFER%N_ITEMS ! THIN_WALL cells, neighboring meshes
2007-
ITW2 = M%OMESH(NOM)%THIN_WALL_RECV_BUFFER%ITEM_INDEX(NN)
2013+
OS => M%OMESH(NOM)%THIN_WALL_RECV_BUFFER
2014+
ALTERNATE_WALL_LOOP_2C: DO NN=1,OS%N_ITEMS ! THIN_WALL cells, neighboring meshes
2015+
ITW2 = OS%ITEM_INDEX(NN)
20082016
CALL SEARCH_FOR_ALTERNATE_WALL_CELLS(NOM,THIN_WALL_INDEX=ITW2)
2017+
IF (FOUND) OS%SAVE_FLAG(NN) = .TRUE.
20092018
ENDDO ALTERNATE_WALL_LOOP_2C
20102019
ENDDO OTHER_MESH_LOOP_B
20112020

@@ -2069,6 +2078,7 @@ SUBROUTINE SEARCH_FOR_ALTERNATE_WALL_CELLS(NOM,WALL_INDEX,THIN_WALL_INDEX)
20692078
TYPE(THIN_WALL_TYPE), POINTER :: TW2
20702079

20712080
M2 => MESHES(NOM)
2081+
FOUND = .FALSE.
20722082

20732083
IF (PRESENT(WALL_INDEX)) THEN
20742084
CELL = WALL_INDEX
@@ -2116,6 +2126,7 @@ SUBROUTINE SEARCH_FOR_ALTERNATE_WALL_CELLS(NOM,WALL_INDEX,THIN_WALL_INDEX)
21162126
OVERLAP_VOLUME = DXX*DYY*DZZ
21172127
WEIGHT_FACTOR = OVERLAP_VOLUME/PRIMARY_VOLUME
21182128
IF (WEIGHT_FACTOR<TOL) CYCLE ALTERNATE_NODE_LOOP
2129+
FOUND = .TRUE. ! Save the index of the alternate wall
21192130
DM = SIZE(THR_D%NODE(I)%ALTERNATE_WALL_INDEX)
21202131
IF (THR_D%NODE(I)%ALTERNATE_WALL_COUNT+1>DM) CALL REALLOCATE_ALTERNATE
21212132
THR_D%NODE(I)%ALTERNATE_WALL_COUNT = THR_D%NODE(I)%ALTERNATE_WALL_COUNT + 1
@@ -3713,7 +3724,7 @@ END SUBROUTINE SET_DENSITY_AND_MASS_FRACTIONS_AT_WALL
37133724

37143725
SUBROUTINE FIND_WALL_BACK_INDICES(NM)
37153726

3716-
USE MEMORY_FUNCTIONS, ONLY: REALLOCATE_INTEGER_ARRAY
3727+
USE MEMORY_FUNCTIONS, ONLY: REALLOCATE_INTEGER_ARRAY,REALLOCATE_LOGICAL_ARRAY
37173728
INTEGER, INTENT(IN) :: NM
37183729
INTEGER :: IW,ITW,N,NOM,IC,IOR,IEC
37193730
TYPE(MESH_TYPE), POINTER :: M,M4
@@ -3745,16 +3756,19 @@ SUBROUTINE FIND_WALL_BACK_INDICES(NM)
37453756
OS%N_ITEMS_DIM = 50
37463757
ALLOCATE(OS%ITEM_INDEX(1:OS%N_ITEMS_DIM))
37473758
ALLOCATE(OS%SURF_INDEX(1:OS%N_ITEMS_DIM))
3759+
ALLOCATE(OS%SAVE_FLAG(1:OS%N_ITEMS_DIM))
37483760
ENDIF
37493761
IF (COUNT(OS%ITEM_INDEX(1:OS%N_ITEMS)==M4%CELL(IC)%WALL_INDEX(IOR))>0) CYCLE
37503762
IF (OS%N_ITEMS>=OS%N_ITEMS_DIM) THEN
37513763
CALL REALLOCATE_INTEGER_ARRAY(OS%ITEM_INDEX,1,OS%N_ITEMS_DIM,OS%N_ITEMS_DIM+50)
37523764
CALL REALLOCATE_INTEGER_ARRAY(OS%SURF_INDEX,1,OS%N_ITEMS_DIM,OS%N_ITEMS_DIM+50)
3765+
CALL REALLOCATE_LOGICAL_ARRAY(OS%SAVE_FLAG ,1,OS%N_ITEMS_DIM,OS%N_ITEMS_DIM+50)
37533766
OS%N_ITEMS_DIM = OS%N_ITEMS_DIM + 50
37543767
ENDIF
37553768
OS%N_ITEMS = OS%N_ITEMS + 1
37563769
OS%ITEM_INDEX(OS%N_ITEMS) = M4%CELL(IC)%WALL_INDEX(IOR)
37573770
OS%SURF_INDEX(OS%N_ITEMS) = M4%CELL(IC)%SURF_INDEX(IOR)
3771+
OS%SAVE_FLAG(OS%N_ITEMS) = .FALSE.
37583772
ENDDO
37593773
ENDDO
37603774
ENDDO
@@ -3783,11 +3797,13 @@ SUBROUTINE FIND_WALL_BACK_INDICES(NM)
37833797
IF (OS%N_ITEMS>=OS%N_ITEMS_DIM) THEN
37843798
CALL REALLOCATE_INTEGER_ARRAY(OS%ITEM_INDEX,1,OS%N_ITEMS_DIM,OS%N_ITEMS_DIM+50)
37853799
CALL REALLOCATE_INTEGER_ARRAY(OS%SURF_INDEX,1,OS%N_ITEMS_DIM,OS%N_ITEMS_DIM+50)
3800+
CALL REALLOCATE_LOGICAL_ARRAY(OS%SAVE_FLAG ,1,OS%N_ITEMS_DIM,OS%N_ITEMS_DIM+50)
37863801
OS%N_ITEMS_DIM = OS%N_ITEMS_DIM + 50
37873802
ENDIF
37883803
OS%N_ITEMS = OS%N_ITEMS + 1
37893804
OS%ITEM_INDEX(OS%N_ITEMS) = M4%CELL(IC)%THIN_WALL_INDEX(IOR,IEC)
37903805
OS%SURF_INDEX(OS%N_ITEMS) = M4%CELL(IC)%THIN_SURF_INDEX(IOR,IEC)
3806+
OS%SAVE_FLAG(OS%N_ITEMS) = .FALSE.
37913807
ENDIF
37923808
ENDDO
37933809
ENDDO
@@ -3805,7 +3821,7 @@ END SUBROUTINE FIND_WALL_BACK_INDICES
38053821
SUBROUTINE FIND_WALL_BACK_INDEX(NM,IW)
38063822

38073823
USE GEOMETRY_FUNCTIONS, ONLY: SEARCH_OTHER_MESHES
3808-
USE MEMORY_FUNCTIONS, ONLY: REALLOCATE_INTEGER_ARRAY
3824+
USE MEMORY_FUNCTIONS, ONLY: REALLOCATE_INTEGER_ARRAY,REALLOCATE_LOGICAL_ARRAY
38093825
USE MISC_FUNCTIONS, ONLY: PROCESS_MESH_NEIGHBORHOOD
38103826
USE COMP_FUNCTIONS, ONLY: SHUTDOWN
38113827
INTEGER, INTENT(IN) :: NM,IW
@@ -4027,16 +4043,19 @@ SUBROUTINE FIND_WALL_BACK_INDEX(NM,IW)
40274043
OS%N_ITEMS_DIM = 50
40284044
ALLOCATE(OS%ITEM_INDEX(1:OS%N_ITEMS_DIM))
40294045
ALLOCATE(OS%SURF_INDEX(1:OS%N_ITEMS_DIM))
4046+
ALLOCATE(OS%SAVE_FLAG(1:OS%N_ITEMS_DIM))
40304047
ENDIF
40314048
IF (COUNT(OS%ITEM_INDEX(1:OS%N_ITEMS)==ONE_D%BACK_INDEX)==0) THEN
40324049
IF (OS%N_ITEMS>=OS%N_ITEMS_DIM) THEN
40334050
CALL REALLOCATE_INTEGER_ARRAY(OS%ITEM_INDEX,1,OS%N_ITEMS_DIM,OS%N_ITEMS_DIM+50)
40344051
CALL REALLOCATE_INTEGER_ARRAY(OS%SURF_INDEX,1,OS%N_ITEMS_DIM,OS%N_ITEMS_DIM+50)
4052+
CALL REALLOCATE_LOGICAL_ARRAY(OS%SAVE_FLAG ,1,OS%N_ITEMS_DIM,OS%N_ITEMS_DIM+50)
40354053
OS%N_ITEMS_DIM = OS%N_ITEMS_DIM + 50
40364054
ENDIF
40374055
OS%N_ITEMS = OS%N_ITEMS + 1
40384056
OS%ITEM_INDEX(OS%N_ITEMS) = ONE_D%BACK_INDEX
40394057
OS%SURF_INDEX(OS%N_ITEMS) = ONE_D%BACK_SURF
4058+
OS%SAVE_FLAG(OS%N_ITEMS) = .TRUE.
40404059
ENDIF
40414060
ENDIF
40424061
EXIT FIND_BACK_WALL_CELL
@@ -4215,7 +4234,7 @@ END SUBROUTINE FIND_WALL_BACK_INDEX
42154234
SUBROUTINE FIND_THIN_WALL_BACK_INDEX(NM,ITW)
42164235

42174236
USE GEOMETRY_FUNCTIONS, ONLY: SEARCH_OTHER_MESHES
4218-
USE MEMORY_FUNCTIONS, ONLY: REALLOCATE_INTEGER_ARRAY
4237+
USE MEMORY_FUNCTIONS, ONLY: REALLOCATE_INTEGER_ARRAY,REALLOCATE_LOGICAL_ARRAY
42194238
INTEGER, INTENT(IN) :: NM,ITW
42204239
INTEGER :: II,JJ,KK,IC,IOR,IEC,ITW2,NOM,NN,NNN,NL,N_MATLS,IIGM,IIGP,JJGM,JJGP,KKGM,KKGP,ICM,ICP
42214240
INTEGER, DIMENSION(MAX_MATERIALS) :: MATL_INDEX
@@ -4334,16 +4353,19 @@ SUBROUTINE FIND_THIN_WALL_BACK_INDEX(NM,ITW)
43344353
OS%N_ITEMS_DIM = 50
43354354
ALLOCATE(OS%ITEM_INDEX(1:OS%N_ITEMS_DIM))
43364355
ALLOCATE(OS%SURF_INDEX(1:OS%N_ITEMS_DIM))
4356+
ALLOCATE(OS%SAVE_FLAG(1:OS%N_ITEMS_DIM))
43374357
ENDIF
43384358
IF (COUNT(OS%ITEM_INDEX(1:OS%N_ITEMS)==ONE_D%BACK_INDEX)==0) THEN
43394359
IF (OS%N_ITEMS>=OS%N_ITEMS_DIM) THEN
43404360
CALL REALLOCATE_INTEGER_ARRAY(OS%ITEM_INDEX,1,OS%N_ITEMS_DIM,OS%N_ITEMS_DIM+50)
43414361
CALL REALLOCATE_INTEGER_ARRAY(OS%SURF_INDEX,1,OS%N_ITEMS_DIM,OS%N_ITEMS_DIM+50)
4362+
CALL REALLOCATE_LOGICAL_ARRAY(OS%SAVE_FLAG ,1,OS%N_ITEMS_DIM,OS%N_ITEMS_DIM+50)
43424363
OS%N_ITEMS_DIM = OS%N_ITEMS_DIM + 50
43434364
ENDIF
43444365
OS%N_ITEMS = OS%N_ITEMS + 1
43454366
OS%ITEM_INDEX(OS%N_ITEMS) = ONE_D%BACK_INDEX
43464367
OS%SURF_INDEX(OS%N_ITEMS) = ONE_D%BACK_SURF
4368+
OS%SAVE_FLAG(OS%N_ITEMS) = .TRUE.
43474369
ENDIF
43484370
SELECT CASE(ABS(IOR))
43494371
CASE(1) ; ONE_D%LAYER_THICKNESS(1) = OB%UNDIVIDED_INPUT_LENGTH(1)

0 commit comments

Comments
 (0)