Skip to content

Commit 9cc0520

Browse files
committed
Merge remote-tracking branch 'firemodels/master' into FireX
2 parents aa3deb3 + a30dd01 commit 9cc0520

26 files changed

Lines changed: 418 additions & 155 deletions

File tree

.github/workflows/cmake.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ 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_TOOLKIT_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/bae85ab1-cfcd-4251-8d42-a0c27949ea33/intel-oneapi-toolkit-2026.0.0.193_offline.exe
5+
WINDOWS_TOOLKIT_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/4144bec3-82ce-4672-bd71-5c93a79cd5e7/intel-oneapi-toolkit-2026.1.0.191_offline.exe
66
WINDOWS_TOOLKIT_COMPONENTS: intel.oneapi.win.ifort-compiler:intel.oneapi.win.mpi.devel:intel.oneapi.win.mkl.devel
77

88
on:
@@ -63,7 +63,7 @@ jobs:
6363
apt-get -y install -y git gcc make cmake sudo environment-modules
6464
6565
# # Setup OneAPI, icx is necessary for third-party libs
66-
# - uses: rscohn2/setup-oneapi@v0
66+
# - uses: marcfehling/setup-oneapi@v0
6767
# if: endsWith(matrix.compiler_mpi, '_intelmpi') != true
6868
# with:
6969
# components: |
@@ -72,7 +72,7 @@ jobs:
7272
# mkl
7373

7474
# Setup OneAPI, icx is necessary for third-party libs
75-
- uses: rscohn2/setup-oneapi@v0
75+
- uses: marcfehling/setup-oneapi@v0
7676
# if: endsWith(matrix.compiler_mpi, '_intelmpi')
7777
with:
7878
components: |

.github/workflows/linux.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,12 @@ jobs:
3131
runs-on: [ubuntu-latest]
3232

3333
steps:
34-
- uses: rscohn2/setup-oneapi@v0
34+
- uses: marcfehling/setup-oneapi@v0
3535
with:
3636
components: |
37-
ifx@2026.0.0
37+
ifx@2026.1.0
3838
impi@2021.18.0
39-
mkl@2026.0.0
39+
mkl@2026.1.0
4040
prune: false
4141

4242
- uses: actions/checkout@v7
@@ -68,7 +68,7 @@ jobs:
6868
run: |
6969
sudo apt-get update
7070
sudo apt-get install libopenmpi-dev openmpi-bin
71-
- uses: rscohn2/setup-oneapi@v0
71+
- uses: marcfehling/setup-oneapi@v0
7272
with:
7373
components: |
7474
mkl@2025.1.0

.github/workflows/windows.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ 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_TOOLKIT_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/bae85ab1-cfcd-4251-8d42-a0c27949ea33/intel-oneapi-toolkit-2026.0.0.193_offline.exe
29+
WINDOWS_TOOLKIT_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/4144bec3-82ce-4672-bd71-5c93a79cd5e7/intel-oneapi-toolkit-2026.1.0.191_offline.exe
3030
WINDOWS_TOOLKIT_COMPONENTS: intel.oneapi.win.ifort-compiler:intel.oneapi.win.mpi.devel:intel.oneapi.win.mkl.devel
3131

3232

Manuals/FDS_User_Guide/FDS_User_Guide.tex

Lines changed: 40 additions & 7 deletions
Large diffs are not rendered by default.

Manuals/FDS_Validation_Guide/Plume_Chapter.tex

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1176,21 +1176,32 @@ \section{Flame Tilt}
11761176

11771177
\clearpage
11781178

1179-
\section{Fireball Diameter}
1179+
\section{Fireball Diameter and Height}
11801180
\label{Fireball Diameter}
1181+
\label{Fireball Height}
11811182

1182-
A fireball is caused by a sudden, violent rupture of a container containing volatile liquids or gases, typically under high pressure. Figure~\ref{Fireball_Diameter_Scatterplot} summarizes comparisons of the measured and predicted maximum horizontal fireball diameter of several sets of experiments.
1183+
A fireball is caused by a sudden, violent rupture of a container containing volatile liquids or gases, typically under high pressure. Figure~\ref{Fireball_Diameter_Scatterplot} summarizes comparisons of the measured and predicted maximum horizontal fireball diameter of several sets of experiments. Figure~\ref{Fireball_Height_Scatterplot} summarizes comparisons of the measured and predicted fireball heights; that is, the height of the fireball at the time of maximum diameter.
11831184

11841185
\begin{figure}[!h]
11851186
\begin{center}
1186-
\includegraphics[height=4.in]{SCRIPT_FIGURES/Scatterplots/FDS_Fireball_Diameter}
1187+
\includegraphics[height=3.in]{SCRIPT_FIGURES/Scatterplots/FDS_Fireball_Diameter}
11871188
\end{center}
11881189
\caption[Summary of fireball diameter predictions]
11891190
{Summary of measured and predicted maximum fireball diameter.}
11901191
\label{Fireball_Diameter_Scatterplot}
11911192
\end{figure}
11921193

11931194

1195+
\begin{figure}[!h]
1196+
\begin{center}
1197+
\includegraphics[height=3.in]{SCRIPT_FIGURES/Scatterplots/FDS_Fireball_Height}
1198+
\end{center}
1199+
\caption[Summary of fireball height predictions]
1200+
{Summary of measured and predicted fireball height.}
1201+
\label{Fireball_Height_Scatterplot}
1202+
\end{figure}
1203+
1204+
11941205
\clearpage
11951206

11961207
\section{Harrison Spill Plumes/Entrainment Experiments}

Manuals/FDS_Validation_Guide/Species_Chapter.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1875,7 +1875,7 @@ \subsection{NIST Pool Fires}
18751875
\subsection{Utiskul Compartment}
18761876
\label{sec:Utiskul_Compartment}
18771877

1878-
A summary of the experiments is given in Sec.~\ref{Utiskul_Compartments_Description}. Figures~\ref{Utiskul_1} through \ref{Utiskul_4} display comparisons of measured and predicted compartment and ceiling jet temperatures, pressure, heat flux, and species concentration. The fuel mass loss rate is specified, not predicted, by the model.
1878+
A summary of the experiments is given in Sec.~\ref{Utiskul_Compartment_Description}. Figures~\ref{Utiskul_1} through \ref{Utiskul_4} display comparisons of measured and predicted compartment and ceiling jet temperatures, pressure, heat flux, and species concentration. The fuel mass loss rate is specified, not predicted, by the model.
18791879

18801880
The species concentrations are measured at extraction points 2~cm above the floor and 2~cm below the ceiling, 10~cm from the vents along the compartment centerline. The ceiling jet temperatures are taken 2~cm below the ceiling along the centerline, at locations 2.5~cm from the upper vent (TC2), 2.5~cm from the back wall (TC13), and at the ceiling center (TC17). The pressures are taken 1.5~cm above the floor and below the ceiling, 2.5~cm from the side wall, and 5~cm from the front wall, where the vents are located.
18811881

Source/ctrl.f90

Lines changed: 166 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ RECURSIVE SUBROUTINE EVALUATE_CONTROL(T,ID,DT,CTRL_STOP_STATUS)
8181
USE MATH_FUNCTIONS, ONLY: EVALUATE_RAMP
8282
USE OUTPUT_CLOCKS, ONLY: RSRT_CLOCK,RSRT_COUNTER
8383
REAL(EB), INTENT(IN) :: T,DT
84-
REAL(EB) :: RAMP_VALUE,T_CHANGE,RAMP_INPUT,PID_VALUE
84+
REAL(EB) :: RAMP_VALUE,T_CHANGE,RAMP_INPUT,PID_VALUE,VALUE1,VALUE2
8585
INTEGER :: NC,COUNTER,K,NN
8686
INTEGER, INTENT(IN) :: ID
8787
TYPE(CONTROL_TYPE), POINTER :: CF
@@ -792,6 +792,171 @@ RECURSIVE SUBROUTINE EVALUATE_CONTROL(T,ID,DT,CTRL_STOP_STATUS)
792792
ENDIF
793793
T_CHANGE = T
794794

795+
CASE (CF_MEMORY)
796+
797+
SELECT CASE (CF%INPUT_TYPE(1))
798+
CASE (DEVICE_INPUT)
799+
DV => DEVICE(CF%INPUT(1))
800+
CF%MESH = DV%MESH
801+
STATE2 = DV%CURRENT_STATE
802+
CASE (CONTROL_INPUT)
803+
IF (.NOT. CONTROL(CF%INPUT(1))%UPDATED) THEN
804+
CALL EVALUATE_CONTROL(T,CF%INPUT(1),DT,CTRL_STOP_STATUS)
805+
STATE2 = CONTROL(CF%INPUT(1))%CURRENT_STATE
806+
CF => CONTROL(ID)
807+
ENDIF
808+
STATE2 = CF%CURRENT_STATE
809+
CF%MESH=CONTROL(CF%INPUT(1))%MESH
810+
END SELECT
811+
812+
IF (STATE2) THEN
813+
SELECT CASE (CF%INPUT_TYPE(2))
814+
CASE (DEVICE_INPUT)
815+
DV => DEVICE(CF%INPUT(2))
816+
CF%INSTANT_VALUE = DV%SMOOTHED_VALUE
817+
CASE (CONTROL_INPUT)
818+
IF (.NOT. CONTROL(CF%INPUT(2))%UPDATED) THEN
819+
CALL EVALUATE_CONTROL(T,CF%INPUT(1),DT,CTRL_STOP_STATUS)
820+
CF => CONTROL(ID)
821+
CF%INSTANT_VALUE = CONTROL(CF%INPUT(1))%INSTANT_VALUE
822+
ENDIF
823+
END SELECT
824+
ENDIF
825+
826+
CASE (CF_STEADY)
827+
CF%INSTANT_VALUE=0._EB
828+
829+
SELECT CASE (CF%INPUT_TYPE(1))
830+
CASE (DEVICE_INPUT)
831+
DV => DEVICE(CF%INPUT(1))
832+
VALUE1 = DV%SMOOTHED_VALUE
833+
CF%MESH = DV%MESH
834+
CASE (CONTROL_INPUT)
835+
IF (.NOT. CONTROL(CF%INPUT(1))%UPDATED) THEN
836+
CALL EVALUATE_CONTROL(T,CF%INPUT(1),DT,CTRL_STOP_STATUS)
837+
CF => CONTROL(ID)
838+
ENDIF
839+
VALUE1 = CONTROL(CF%INPUT(1))%INSTANT_VALUE
840+
CF%MESH=CONTROL(CF%INPUT(1))%MESH
841+
END SELECT
842+
843+
IF (ABS(VALUE1 - CF%PREVIOUS_VALUE) < 10._EB * SPACING(MAX(VALUE1,CF%PREVIOUS_VALUE))) STATE2 = .TRUE.
844+
CF%PREVIOUS_VALUE = VALUE1
845+
CF%INSTANT_VALUE = VALUE1
846+
T_CHANGE = T
847+
848+
CASE (CF_LT)
849+
CF%INSTANT_VALUE=0._EB
850+
851+
SELECT CASE (CF%INPUT_TYPE(1))
852+
CASE (DEVICE_INPUT)
853+
DV => DEVICE(CF%INPUT(1))
854+
VALUE1 = DV%SMOOTHED_VALUE
855+
CF%MESH = DV%MESH
856+
CASE (CONTROL_INPUT)
857+
IF (.NOT. CONTROL(CF%INPUT(1))%UPDATED) THEN
858+
CALL EVALUATE_CONTROL(T,CF%INPUT(1),DT,CTRL_STOP_STATUS)
859+
CF => CONTROL(ID)
860+
ENDIF
861+
VALUE1 = CONTROL(CF%INPUT(1))%INSTANT_VALUE
862+
CF%MESH=CONTROL(CF%INPUT(1))%MESH
863+
CASE (CONSTANT_INPUT)
864+
VALUE1 = CF%CONSTANT
865+
END SELECT
866+
867+
SELECT CASE (CF%INPUT_TYPE(2))
868+
CASE (DEVICE_INPUT)
869+
DV => DEVICE(CF%INPUT(2))
870+
VALUE2 = CF%INSTANT_VALUE ** DV%SMOOTHED_VALUE
871+
CF%MESH = DV%MESH
872+
CASE (CONTROL_INPUT)
873+
IF (.NOT. CONTROL(CF%INPUT(2))%UPDATED) THEN
874+
CALL EVALUATE_CONTROL(T,CF%INPUT(2),DT,CTRL_STOP_STATUS)
875+
CF => CONTROL(ID)
876+
ENDIF
877+
VALUE2 = CF%INSTANT_VALUE ** CONTROL(CF%INPUT(2))%INSTANT_VALUE
878+
CF%MESH=CONTROL(CF%INPUT(2))%MESH
879+
CASE (CONSTANT_INPUT)
880+
VALUE2 = CF%INSTANT_VALUE ** CF%CONSTANT
881+
END SELECT
882+
883+
IF (VALUE1 < VALUE2) STATE2 = .TRUE.
884+
T_CHANGE = T
885+
CASE (CF_GT)
886+
CF%INSTANT_VALUE=0._EB
887+
888+
SELECT CASE (CF%INPUT_TYPE(1))
889+
CASE (DEVICE_INPUT)
890+
DV => DEVICE(CF%INPUT(1))
891+
VALUE1 = DV%SMOOTHED_VALUE
892+
CF%MESH = DV%MESH
893+
CASE (CONTROL_INPUT)
894+
IF (.NOT. CONTROL(CF%INPUT(1))%UPDATED) THEN
895+
CALL EVALUATE_CONTROL(T,CF%INPUT(1),DT,CTRL_STOP_STATUS)
896+
CF => CONTROL(ID)
897+
ENDIF
898+
VALUE1 = CONTROL(CF%INPUT(1))%INSTANT_VALUE
899+
CF%MESH=CONTROL(CF%INPUT(1))%MESH
900+
CASE (CONSTANT_INPUT)
901+
VALUE1 = CF%CONSTANT
902+
END SELECT
903+
904+
SELECT CASE (CF%INPUT_TYPE(2))
905+
CASE (DEVICE_INPUT)
906+
DV => DEVICE(CF%INPUT(2))
907+
VALUE2 = CF%INSTANT_VALUE ** DV%SMOOTHED_VALUE
908+
CF%MESH = DV%MESH
909+
CASE (CONTROL_INPUT)
910+
IF (.NOT. CONTROL(CF%INPUT(2))%UPDATED) THEN
911+
CALL EVALUATE_CONTROL(T,CF%INPUT(2),DT,CTRL_STOP_STATUS)
912+
CF => CONTROL(ID)
913+
ENDIF
914+
VALUE2 = CF%INSTANT_VALUE ** CONTROL(CF%INPUT(2))%INSTANT_VALUE
915+
CF%MESH=CONTROL(CF%INPUT(2))%MESH
916+
CASE (CONSTANT_INPUT)
917+
VALUE2 = CF%INSTANT_VALUE ** CF%CONSTANT
918+
END SELECT
919+
920+
IF (VALUE1 > VALUE2) STATE2 = .TRUE.
921+
T_CHANGE = T
922+
CASE (CF_EQ)
923+
CF%INSTANT_VALUE=0._EB
924+
925+
SELECT CASE (CF%INPUT_TYPE(1))
926+
CASE (DEVICE_INPUT)
927+
DV => DEVICE(CF%INPUT(1))
928+
VALUE1 = DV%SMOOTHED_VALUE
929+
CF%MESH = DV%MESH
930+
CASE (CONTROL_INPUT)
931+
IF (.NOT. CONTROL(CF%INPUT(1))%UPDATED) THEN
932+
CALL EVALUATE_CONTROL(T,CF%INPUT(1),DT,CTRL_STOP_STATUS)
933+
CF => CONTROL(ID)
934+
ENDIF
935+
VALUE1 = CONTROL(CF%INPUT(1))%INSTANT_VALUE
936+
CF%MESH=CONTROL(CF%INPUT(1))%MESH
937+
CASE (CONSTANT_INPUT)
938+
VALUE1 = CF%CONSTANT
939+
END SELECT
940+
941+
SELECT CASE (CF%INPUT_TYPE(2))
942+
CASE (DEVICE_INPUT)
943+
DV => DEVICE(CF%INPUT(2))
944+
VALUE2 = CF%INSTANT_VALUE ** DV%SMOOTHED_VALUE
945+
CF%MESH = DV%MESH
946+
CASE (CONTROL_INPUT)
947+
IF (.NOT. CONTROL(CF%INPUT(2))%UPDATED) THEN
948+
CALL EVALUATE_CONTROL(T,CF%INPUT(2),DT,CTRL_STOP_STATUS)
949+
CF => CONTROL(ID)
950+
ENDIF
951+
VALUE2 = CF%INSTANT_VALUE ** CONTROL(CF%INPUT(2))%INSTANT_VALUE
952+
CF%MESH=CONTROL(CF%INPUT(2))%MESH
953+
CASE (CONSTANT_INPUT)
954+
VALUE2 = CF%INSTANT_VALUE ** CF%CONSTANT
955+
END SELECT
956+
957+
IF (ABS(VALUE1 - VALUE2) < 10._EB * SPACING(MAX(VALUE1,VALUE2))) STATE2 = .TRUE.
958+
T_CHANGE = T
959+
795960
END SELECT CONTROL_SELECT
796961

797962
IF (CF%CONTROL_INDEX/=TIME_DELAY) THEN

Source/devc.f90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,8 @@ MODULE CONTROL_VARIABLES
147147
INTEGER, PARAMETER :: TIME_DELAY=1,CUSTOM=2,DEADBAND=3,KILL=4,CORE_DUMP=5,&
148148
AND_GATE=51,OR_GATE=52,XOR_GATE=53,X_OF_N_GATE=54,CF_EXTERNAL=55,&
149149
CF_EXP=101,CF_LOG=102,CF_PID=103,CF_SIN=104,CF_COS=105,CF_TAN=106,CF_ASIN=107,CF_ACOS=108,CF_ATAN=109,&
150-
CF_ABS=110,&
151-
CF_POWER=201,CF_DIVIDE=202,&
150+
CF_ABS=110,CF_STEADY=111,&
151+
CF_POWER=201,CF_DIVIDE=202,CF_EQ=203,CF_GT=204,CF_LT=205,CF_MEMORY=206,&
152152
CF_SUM=301,CF_SUBTRACT=302,CF_MULTIPLY=303,CF_MIN=304,CF_MAX=305,&
153153
CF_PERCENTILE=401
154154
!> @}

Source/part.f90

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2537,6 +2537,11 @@ SUBROUTINE MOVE_PARTICLES(T,DT,NM)
25372537
BC%Z = BC%Z - 0.2_EB*DZ(BC%KKG)
25382538
END SELECT
25392539
ENDIF
2540+
IF (LPC%LIQUID_DROPLET .AND. LPC%DRIP_DIAMETER>0._EB) THEN ! change the droplet radius
2541+
LP%PWT = LP%PWT*(LP%RADIUS/(0.5_EB*LPC%DRIP_DIAMETER))**3
2542+
LP%RADIUS = 0.5_EB*LPC%DRIP_DIAMETER
2543+
LP%MASS = FOTHPI*LPC%DENSITY*LP%RADIUS**3
2544+
ENDIF
25402545
BC%IOR = 0
25412546
LP%WALL_INDEX = 0
25422547
ENDIF

Source/read.f90

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5909,7 +5909,7 @@ SUBROUTINE READ_PART
59095909
INTEGER :: SAMPLING_FACTOR,N,NN,NR,ILPC,IPC,RGB(3),N_STRATA,N_LAGRANGIAN_CLASSES_READ,ADHERE_TO_SOLID, &
59105910
NEW_PARTICLE_INCREMENT
59115911
REAL(EB) :: DIAMETER, GAMMA_D,AGE,INITIAL_TEMPERATURE,HEAT_OF_COMBUSTION, &
5912-
VERTICAL_VELOCITY,HORIZONTAL_VELOCITY,MAXIMUM_DIAMETER,MINIMUM_DIAMETER,SURFACE_DIAMETER,SIGMA_D, &
5912+
VERTICAL_VELOCITY,HORIZONTAL_VELOCITY,MAXIMUM_DIAMETER,MINIMUM_DIAMETER,DRIP_DIAMETER,SURFACE_DIAMETER,SIGMA_D, &
59135913
SURFACE_TENSION,BREAKUP_RATIO,BREAKUP_GAMMA_D,BREAKUP_SIGMA_D,&
59145914
DENSE_VOLUME_FRACTION,REAL_REFRACTIVE_INDEX,COMPLEX_REFRACTIVE_INDEX,RUNNING_AVERAGE_FACTOR,&
59155915
RUNNING_AVERAGE_FACTOR_WALL,KILL_DIAMETER,&
@@ -5927,7 +5927,7 @@ SUBROUTINE READ_PART
59275927
NAMELIST /PART/ ADHERE_TO_SOLID,AGE,BREAKUP,BREAKUP_CNF_RAMP_ID,BREAKUP_DISTRIBUTION,BREAKUP_GAMMA_D,BREAKUP_RATIO,&
59285928
BREAKUP_SIGMA_D,CHECK_DISTRIBUTION,CNF_RAMP_ID,COLOR,COMPLEX_REFRACTIVE_INDEX,&
59295929
CTRL_ID,DEBUG,DENSE_VOLUME_FRACTION,&
5930-
DEVC_ID,DIAMETER,DISTRIBUTION,DRAG_COEFFICIENT,DRAG_LAW,&
5930+
DEVC_ID,DIAMETER,DISTRIBUTION,DRAG_COEFFICIENT,DRAG_LAW,DRIP_DIAMETER,&
59315931
EMBER_DENSITY_THRESHOLD,EMBER_PARTICLE,EMBER_VELOCITY_THRESHOLD,EMBER_SNAG_FACTOR,EVAP_MODEL,&
59325932
FREE_AREA_FRACTION,FYI,GAMMA_D,HEAT_OF_COMBUSTION,HEAT_TRANSFER_COEFFICIENT_GAS,HEAT_TRANSFER_COEFFICIENT_SOLID,&
59335933
HORIZONTAL_VELOCITY,ID,INITIAL_TEMPERATURE,KILL_DIAMETER,MASSLESS,&
@@ -6249,6 +6249,7 @@ SUBROUTINE READ_PART
62496249
LPC%SPEC_ID = SPEC_ID
62506250
LPC%SURF_ID = SURF_ID
62516251
LPC%SURF_INDEX = -1
6252+
LPC%DRIP_DIAMETER = DRIP_DIAMETER*1.E-6_EB
62526253
LPC%SURFACE_DIAMETER = SURFACE_DIAMETER*1.E-6_EB
62536254
LPC%SURFACE_TENSION = SURFACE_TENSION
62546255
LPC%ADJUST_EVAPORATION = 1._EB ! If H_O_C>0. this parameter will have to be reset later
@@ -6438,6 +6439,7 @@ SUBROUTINE SET_PART_DEFAULTS
64386439
RGB = -1
64396440
SPEC_ID = 'null'
64406441
SURF_ID = 'null'
6442+
DRIP_DIAMETER = -1._EB
64416443
SURFACE_DIAMETER = -1._EB
64426444
SURFACE_TENSION = 72.8E-3_EB ! N/m, applies for water
64436445
COLOR = 'null'
@@ -14827,6 +14829,17 @@ SUBROUTINE READ_CTRL
1482714829
WRITE(MESSAGE,'(A,I0,A)') 'ERROR(902): CTRL ',NC,', PID controller must be given a TARGET_VALUE.'
1482814830
CALL SHUTDOWN(MESSAGE) ; RETURN
1482914831
ENDIF
14832+
CASE('LESS THAN')
14833+
CF%CONTROL_INDEX = CF_LT
14834+
CASE('GREATER THAN')
14835+
CF%CONTROL_INDEX = CF_GT
14836+
CASE('EQUALS')
14837+
CF%CONTROL_INDEX = CF_EQ
14838+
CASE('MEMORY')
14839+
CF%CONTROL_INDEX = CF_MEMORY
14840+
CF%INSTANT_VALUE = CF%CONSTANT
14841+
CASE('STEADY')
14842+
CF%CONTROL_INDEX = CF_STEADY
1483014843
CASE DEFAULT
1483114844
WRITE(MESSAGE,'(A,I0,A)') 'ERROR(903): CTRL ',NC,' FUNCTION_TYPE not recognized.'
1483214845
CALL SHUTDOWN(MESSAGE) ; RETURN

0 commit comments

Comments
 (0)