36 . IPART ,SUBSET ,UNITAB ,LSUBMODEL )
50#include "implicit_f.inc"
60 INTEGER ,
INTENT(IN) :: SENS_ID
61 INTEGER ,
DIMENSION(LIPART1,*),
INTENT(IN) :: IPART
62 CHARACTER(LEN=NCHARTITLE)::TITR
63 TYPE (SENSOR_STR_) :: SENSOR_PTR
64 TYPE (SUBMODEL_DATA) ,
DIMENSION(NSUBMOD) :: LSUBMODEL
65 TYPE (SUBSET_) ,
DIMENSION(NSUBS) :: SUBSET
66 TYPE (UNIT_TYPE_) ,
INTENT(IN) :: UNITAB
70 INTEGER :: J,ICONST,SENS_TYPE,PART_ID,SUB_ID,PARTN,SUBN,ISELECT,
72 my_real :: tdel,tmin,iemin,iemax,kemin,kemax,ietol,ietime,ketol,ketime
73 LOGICAL :: IS_AVAILABLE
77 is_available = .false.
82 CALL hm_get_floatv(
'Tdelay' ,tdel ,is_available,lsubmodel,unitab)
84 CALL hm_get_intv (
'Part_Id' ,part_id ,is_available,lsubmodel)
85 CALL hm_get_intv (
'Subset_ID' ,sub_id ,is_available,lsubmodel)
88 CALL hm_get_floatv('iemin
' ,IEMIN ,IS_AVAILABLE,LSUBMODEL,UNITAB)
89 CALL HM_GET_FLOATV('iemax
' ,IEMAX ,IS_AVAILABLE,LSUBMODEL,UNITAB)
90 CALL HM_GET_FLOATV('kemin
' ,KEMIN ,IS_AVAILABLE,LSUBMODEL,UNITAB)
91 CALL HM_GET_FLOATV('kemax
' ,KEMAX ,IS_AVAILABLE,LSUBMODEL,UNITAB)
92 CALL HM_GET_FLOATV('tmin
' ,TMIN ,IS_AVAILABLE,LSUBMODEL,UNITAB)
94 CALL HM_GET_FLOATV('ietol
' ,IETOL ,IS_AVAILABLE,LSUBMODEL,UNITAB)
95 CALL HM_GET_FLOATV('ietime
' ,IETIME ,IS_AVAILABLE,LSUBMODEL,UNITAB)
96 CALL HM_GET_FLOATV('ketol
' ,KETOL ,IS_AVAILABLE,LSUBMODEL,UNITAB)
97 CALL HM_GET_FLOATV('ketime
' ,KETIME ,IS_AVAILABLE,LSUBMODEL,UNITAB)
101.and..or..and.
IF (IETOL > ZERO IETIME > ZERO KETOL > ZERO KETIME > ZERO) THEN
102 ICONST = 1 ! constant energy option active
104 IF (IEMAX == ZERO) IEMAX = INFINITY
105 IF (KEMAX == ZERO) KEMAX = INFINITY
106 IF (IEMIN == ZERO) IEMIN =-INFINITY
107 IF (KEMIN == ZERO) KEMIN =-INFINITY
108 IF (IETIME == ZERO) IETIME = INFINITY
109 IF (KETIME == ZERO) KETIME = INFINITY
110 IF (ISELECT == 0) ISELECT= 1 ! sum of Part energy by default
116 IS_AVAILABLE = .FALSE.
118 IF (IPART(4,J) == PART_ID) THEN
119 IS_AVAILABLE = .TRUE.
124.NOT.
IF ( IS_AVAILABLE) THEN
126 ELSE ! ignore subset_id
130.NOT.
IF ( IS_AVAILABLE) THEN
132 IF (SUBSET(J)%ID == SUB_ID) THEN
133 IS_AVAILABLE = .TRUE.
138.NOT.
IF ( IS_AVAILABLE) SUB_ID = 0
141.NOT..and.
IF ( IS_AVAILABLE ISELECT == 1) THEN
142 ! we take global subset including all parts
143 SUB_ID = SUBSET(NSUBS)%ID
145 ELSE IF (IS_AVAILABLE) THEN
149 WRITE (IOUT, 1000) SENS_ID,TDEL
150 IF (ISELECT == 2) THEN
152 ELSE IF (PART_ID > 0) THEN
153 WRITE (IOUT, 2100) PART_ID
154 ELSE IF (SUB_ID > 0) THEN
155 WRITE (IOUT, 2200) SUB_ID
159 WRITE (IOUT ,3000) IEMIN,IEMAX,KEMIN,KEMAX,
160 . IETOL,KETOL,TMIN,IETIME,KETIME
162 IF (IETIME == INFINITY) THEN
166 IF (KETIME == INFINITY) THEN
175 IF (ISELECT == 2) THEN
176 NVAR = 10 ! additional terms to save total system internal and linetic energy
181 ALLOCATE (SENSOR_PTR%IPARAM(NPARIS))
182 ALLOCATE (SENSOR_PTR%RPARAM(NPARRS))
183 ALLOCATE (SENSOR_PTR%VAR(NVAR))
184 SENSOR_PTR%VAR(:) = ZERO
186 SENSOR_PTR%NVAR = NVAR
187 SENSOR_PTR%NPARI = NPARIS
188 SENSOR_PTR%NPARR = NPARRS
189 SENSOR_PTR%TYPE = SENS_TYPE
190 SENSOR_PTR%SENS_ID = SENS_ID
191 SENSOR_PTR%STATUS = 0 ! status = deactivated
192 SENSOR_PTR%TSTART = INFINITY
193 SENSOR_PTR%TCRIT = INFINITY
194 SENSOR_PTR%TMIN = TMIN
195 SENSOR_PTR%TDELAY = TDEL ! time delay before activation
196 SENSOR_PTR%VALUE = ZERO
198 SENSOR_PTR%IPARAM(1) = PARTN ! PART number
199 SENSOR_PTR%IPARAM(2) = SUBN ! SUBSET number
200 SENSOR_PTR%IPARAM(3) = ICONST ! const energy option
201 SENSOR_PTR%IPARAM(4) = ISELECT ! global system energy vs PART/SUBSET energy selector
203 SENSOR_PTR%RPARAM(1) = IEMIN
204 SENSOR_PTR%RPARAM(2) = IEMAX
205 SENSOR_PTR%RPARAM(3) = KEMIN
206 SENSOR_PTR%RPARAM(4) = KEMAX
207 SENSOR_PTR%RPARAM(5) = IETOL
208 SENSOR_PTR%RPARAM(6) = KETOL
209 SENSOR_PTR%RPARAM(7) = IETIME
210 SENSOR_PTR%RPARAM(8) = KETIME
213 . 5X,' sensor
TYPE 14: part energy
'/,
214 . 5X,' ---------------------------
'/,
215 . 5X,'sensor
id. . . . . . . . . . . . . . . . . =
',I10/
216 . 5X,'time delay before activation . . . . . . . =
',E12.4)
218 . 5X,' part
id. . . . . . . . . . . . . . . . . =
',I10)
220 . 5X,' subset
id. . . . . . . . . . . . . . . . =
',I10)
222 . 5X,' global subset energy(all parts) . . . . .
')
224 . 5X,' total system energy(entire model) . . . .
')
226 . 5X,' minimum internal energy. . . . . . . . . =
',E12.4/
227 . 5X,' maximum internal energy. . . . . . . . . =
',E12.4/
228 . 5X,' minimum kinetic energy . . . . . . . . . =
',E12.4/
229 . 5X,' maximum kinetic energy . . . . . . . . . =
',E12.4/
230 . 5X,' tolerance of constant internal energy. . =
',E12.4/
231 . 5X,' tolerance of constant kinetic energy . . =
',E12.4/
232 . 5X,' duration limit of
max/
min energy . . . . =
',E12.4/
233 . 5X,' duration limit of constant int energy. . =
',E12.4/
234 . 5X,' duration limit of constant kin energy. . =
',E12.4//)