OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
read_sensors.F File Reference
#include "implicit_f.inc"
#include "scr07_c.inc"
#include "scr17_c.inc"
#include "task_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine read_sensors (sensors, python)

Function/Subroutine Documentation

◆ read_sensors()

subroutine read_sensors ( type (sensors_), intent(inout) sensors,
type(python_), intent(in) python )

Definition at line 39 of file read_sensors.F.

40C-----------------------------------------------
41C M o d u l e s
42C-----------------------------------------------
43 USE python_funct_mod
44 USE sensor_mod
45 USE message_mod
47C-----------------------------------------------
48C I m p l i c i t T y p e s
49C-----------------------------------------------
50#include "implicit_f.inc"
51#include "scr07_c.inc"
52#include "scr17_c.inc"
53#include "task_c.inc"
54C-----------------------------------------------
55C D u m m y A r g u m e n t s
56C-----------------------------------------------
57 TYPE (SENSORS_) ,INTENT(INOUT) :: SENSORS
58 TYPE(PYTHON_), INTENT(IN) :: PYTHON
59C-----------------------------------------------
60C L o c a l V a r i a b l e s
61C-----------------------------------------------
62 INTEGER I,ISEN,LEN,IAD,NFIX,NPARI,NPARR,NVAR,TYP,NSENSOR,IERR
63 INTEGER, DIMENSION(LTITR) :: ITITLE
64 my_real, DIMENSION(:), ALLOCATABLE :: head,rbuf
65 CHARACTER(LEN = NCHARTITLE) :: TITLE
66 INTEGER :: PYID
67C=======================================================================
68 nsensor = sensors%NSENSOR
69 ALLOCATE(sensors%SENSOR_TAB(nsensor))
70
71 IF (nsensor > 0) THEN
72 nfix = 11
73 ALLOCATE (head(nfix) )
74c
75 DO isen=1,nsensor
76 CALL read_db (head,nfix)
77c
78 sensors%SENSOR_TAB(isen)%TYPE = nint(head(1))
79 sensors%SENSOR_TAB(isen)%SENS_ID = nint(head(2))
80 sensors%SENSOR_TAB(isen)%STATUS = nint(head(3))
81 sensors%SENSOR_TAB(isen)%TCRIT = head(4)
82 sensors%SENSOR_TAB(isen)%TMIN = head(5)
83 sensors%SENSOR_TAB(isen)%TDELAY = head(6)
84 sensors%SENSOR_TAB(isen)%TSTART = head(7)
85 sensors%SENSOR_TAB(isen)%VALUE = head(8)
86 sensors%SENSOR_TAB(isen)%NPARI = nint(head(9))
87 sensors%SENSOR_TAB(isen)%NPARR = nint(head(10))
88 sensors%SENSOR_TAB(isen)%NVAR = nint(head(11))
89c
90 npari = sensors%SENSOR_TAB(isen)%NPARI
91 nparr = sensors%SENSOR_TAB(isen)%NPARR
92 nvar = sensors%SENSOR_TAB(isen)%NVAR
93
94 ALLOCATE(sensors%SENSOR_TAB(isen)%IPARAM(npari))
95 ALLOCATE(sensors%SENSOR_TAB(isen)%RPARAM(nparr))
96 ALLOCATE(sensors%SENSOR_TAB(isen)%VAR(nvar))
97c
98 len = npari + nparr + nvar
99 ALLOCATE (rbuf(len) )
100 CALL read_db (rbuf,len)
101c
102 iad = 0
103 IF (npari > 0) THEN
104 DO i = 1,npari
105 sensors%SENSOR_TAB(isen)%IPARAM(i) = nint(rbuf(iad+i))
106 END DO
107 iad = iad + npari
108 END IF
109 IF (nparr > 0) THEN
110 DO i = 1,nparr
111 sensors%SENSOR_TAB(isen)%RPARAM(i) = rbuf(iad+i)
112 END DO
113 iad = iad + nparr
114 END IF
115 IF (nvar > 0) THEN
116 DO i = 1,nvar
117 sensors%SENSOR_TAB(isen)%VAR(i) = rbuf(iad+i)
118 END DO
119 iad = iad + nvar
120 END IF
121c
122 DEALLOCATE (rbuf)
123c
124c read sensor title
125 CALL read_i_c(ititle,ltitr)
126 CALL fretitl2(title,ititle,ltitr)
127 sensors%SENSOR_TAB(isen)%TITLE = title
128c
129 typ = sensors%SENSOR_TAB(isen)%TYPE
130 IF (typ == 29 .OR. typ == 30 .OR. typ == 31)THEN
131
132 ALLOCATE(sensors%SENSOR_TAB(isen)%INTEGER_USERPARAM(nsenpari))
133 ALLOCATE(sensors%SENSOR_TAB(isen)%FLOAT_USERPARAM(nsenparr))
134
135 ALLOCATE(sensors%SENSOR_TAB(isen)%INTEGER_USERBUF(isenbuf))
136 ALLOCATE(sensors%SENSOR_TAB(isen)%FLOAT_USERBUF(lsenbuf))
137
138 CALL read_i_c(sensors%SENSOR_TAB(isen)%INTEGER_USERPARAM,nsenpari)
139 CALL read_i_c(sensors%SENSOR_TAB(isen)%INTEGER_USERBUF,isenbuf)
140
141 CALL read_db (sensors%SENSOR_TAB(isen)%FLOAT_USERPARAM,nsenparr)
142 CALL read_db (sensors%SENSOR_TAB(isen)%FLOAT_USERBUF,lsenbuf)
143
144 ENDIF
145 IF( typ == 40) THEN ! python senso
146 CALL read_i_c(sensors%SENSOR_TAB(isen)%PYTHON_FUNCTION_ID,1)
147 pyid = sensors%SENSOR_TAB(isen)%PYTHON_FUNCTION_ID
148 CALL copy_python_function(python%FUNCTS(pyid),sensors%SENSOR_TAB(isen)%PYTHON_FUNCTION)
149 ENDIF
150
151 END DO
152c
153c--------------------------------------
154c Read Logical sensor index array
155c
156 CALL read_i_c(sensors%LOGICAL_SENSOR_COUNT,1)
157
158 ALLOCATE(sensors%LOGICAL_SENSORS_LIST(sensors%LOGICAL_SENSOR_COUNT))
159 CALL read_i_c(sensors%LOGICAL_SENSORS_LIST,sensors%LOGICAL_SENSOR_COUNT)
160c
161c--------------------------------------
162c Read spmd/PON exchange arrays
163c
164 ALLOCATE (sensors%FSAV(12,6,sensors%SFSAV) ,stat=ierr)
165 ALLOCATE (sensors%TABSENSOR(sensors%STABSEN),stat=ierr)
166
167 CALL read_dpdb(sensors%FSAV,12*6*sensors%SFSAV)
168
169 CALL read_i_c(sensors%TABSENSOR,sensors%STABSEN)
170
171c--------------------------------------
172 IF (mcheck /= 0 ) THEN
173 CALL read_i_c(sensors%STOP ,sensors%NSTOP) ! Must be read at any chkpt restart
174 ENDIF
175 IF (mcheck /= 0 .and. ispmd == 0) THEN
176 CALL read_i_c(sensors%STAT ,sensors%NSTAT)
177 CALL read_i_c(sensors%OUTP ,sensors%NOUTP)
178 CALL read_i_c(sensors%ANIM ,sensors%NANIM)
179 END IF
180c
181 DEALLOCATE (head)
182c
183 END IF ! NSENSOR > 0
184c--------------------------------------
185 RETURN
#define my_real
Definition cppsort.cpp:32
integer, parameter nchartitle
integer function nvar(text)
Definition nvar.F:32
subroutine read_dpdb(a, n)
Definition read_db.F:251
subroutine read_db(a, n)
Definition read_db.F:88
subroutine fretitl2(titr, iasc, l)
Definition freform.F:804
void read_i_c(int *w, int *len)