54 . XSENS ,IPARI ,PARTSAV2 ,GAUGE ,FSAV ,
55 . X ,V ,A ,ACC ,NPRW ,
56 . SUBSET ,IGRSURF ,IGRNOD ,PYTHON)
68#include "implicit_f.inc"
79 INTEGERINTENT(IN) :: NSENSOR
80 INTEGER ,
DIMENSION(NPARI,NINTER) ,
INTENT(IN) :: IPARI
81 INTEGER ,
DIMENSION(*) ,
INTENT(IN) :: NPRW
82 my_real ,
DIMENSION(3,NUMNOD) ,
INTENT(IN) :: x,v,a
83 my_real ,
DIMENSION(12,NSENSOR) ,
INTENT(INOUT) :: xsens
84 my_real ,
DIMENSION(LLACCELM,*) ,
INTENT(IN) :: acc
85 my_real ,
DIMENSION(NTHVKI,*) ,
INTENT(IN) :: fsav
86 my_real ,
DIMENSION(LLGAUGE,*) ,
INTENT(IN) :: gauge
87 my_real ,
DIMENSION(2,*) ,
INTENT(IN) :: partsav2
88 my_real ,
INTENT(IN) :: time,timestep
89 TYPE (SUBSET_) ,
DIMENSION(NSUBS) ,
INTENT(IN) :: SUBSET
90 TYPE(
surf_) ,
DIMENSION(NSURF) ,
INTENT(IN) :: IGRSURF
91 TYPE(
group_) ,
DIMENSION(NGRNOD) ,
INTENT(IN) :: IGRNOD
92 TYPE (SENSORS_) ,
INTENT(INOUT) :: SENSORS
93 TYPE(python_),
INTENT(INOUT) :: PYTHON
97 INTEGER TYP,ISENS,SENS_ID,SIZE,STABS,SFSAV
98 CHARACTER(LEN=256) :: OPTION
99 LOGICAL :: ANY_PYTHON_SENSOR
100 INTEGER,
DIMENSION(:),
ALLOCATABLE :: UIDS
101 DOUBLE PRECISION,
DIMENSION(:,:),
ALLOCATABLE :: RESULTS
102 INTEGER,
DIMENSION(:),
ALLOCATABLE :: STATUSES
103 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TYPES
109 any_python_sensor = .false.
110 stabs = sensors%STABSEN
111 sfsav = sensors%SFSAV
119 sensors%SENSOR_TAB(isens)%RESULTS(sensor_result_size) = zero
120 typ = sensors%SENSOR_TAB(isens)%TYPE
126 CALL sensor_time(sensors%SENSOR_TAB(isens) ,time ,timestep)
131 ELSEIF (typ == 1)
THEN
133 CALL sensor_acc(sensors%SENSOR_TAB(isens) ,acc)
138 ELSEIF (typ == 2)
THEN
140 CALL sensor_dist(sensors%SENSOR_TAB(isens) ,x ,xsens(1,isens))
145 ELSEIF (typ == 6)
THEN
147 . ipari ,sfsav ,stabs ,sensors%TABSENSOR ,sensors%FSAV)
155 . nprw ,sfsav ,stabs ,sensors%TABSENSOR ,sensors%FSAV)
167 ELSEIF (typ == 10)
THEN
174 ELSEIF (typ == 11)
THEN
176 CALL sensor_rbody(sensors%SENSOR_TAB(isens),sfsav ,stabs ,sensors%TABSENSOR,sensors%FSAV)
182 ELSEIF (typ == 12)
THEN
185 . sfsav ,stabs ,sensors%TABSENSOR ,fsav ,sensors%FSAV )
190 ELSEIF (typ == 13)
THEN
192 CALL sensor_work(sensors%SENSOR_TAB(isens),x ,xsens(1,isens) ,
198 ELSEIF (typ == 14)
THEN
201 * sensors%NSENSOR,sensors%SENSOR_STRUCT )
206 ELSEIF (typ == 15)
THEN
213 ELSEIF (typ == 16)
THEN
215 CALL sensor_hic(sensors%SENSOR_TAB(isens) ,a ,acc )
220 ELSEIF (typ == 17)
THEN
222 CALL sensor_temp(sensors%SENSOR_TAB(isens) ,isens ,igrnod)
225 ELSEIF (typ == 19)
THEN
232 ELSEIF (typ == 29)
THEN
236 sens_id = sensors%SENSOR_TAB(isens)%SENS_ID
238 IF (userl_avail==1)
THEN
239 CALL eng_userlib_user_sens(typ,sens_id)
243 option=
'USER SENSOR 29'
244 size=len_trim(option)
245 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
250 ELSEIF (typ == 30)
THEN
254 sens_id = sensors%SENSOR_TAB(isens)%SENS_ID
256 IF (userl_avail==1)
THEN
257 CALL eng_userlib_user_sens(typ,sens_id)
261 option=
'USER SENSOR 30'
262 size=len_trim(option)
263 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo
268 ELSEIF (typ == 31)
THEN
271 sens_id = sensors%SENSOR_TAB(isens)%SENS_ID
273 IF (userl_avail==1)
THEN
274 CALL eng_userlib_user_sens(typ,sens_id)
278 option=
'USER SENSOR 31'
279 size=len_trim(option)
280 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
284 ELSEIF (typ == sensor_type_python)
THEN
286 any_python_sensor = .true.
294 IF(python%NB_FUNCTS > 0)
THEN
295 ALLOCATE(uids(nsensor))
296 ALLOCATE(results(sensor_result_size,nsensor))
297 ALLOCATE(statuses(nsensor))
298 ALLOCATE(types(nsensor))
300 typ = sensors%SENSOR_TAB(isens)%TYPE
302 uids(isens) = sensors%SENSOR_TAB(isens
303 statuses(isens) = sensors%SENSOR_TAB(isens)%STATUS
304 results(1:sensor_result_size,isens) = sensors%SENSOR_TAB(isens)%RESULTS(1:sensor_result_size)
306 CALL python_update_sensors(types,uids,statuses,results,nsensor)
312 IF (any_python_sensor)
THEN
314 typ = sensors%SENSOR_TAB(isens)%TYPE
315 IF (typ == sensor_type_python)
THEN
316 CALL sensor_python(sensors%SENSOR_TAB(isens))
322 IF (stabs > 0) sensors%FSAV(1:12,1:6,1:sfsav) = zero
subroutine resol(timers, element, nodes, coupling, af, iaf, iskwn, neth, ipart, nom_opt, kxx, ixx, ixtg, ixs, ixq, ixt, ixp, ixr, ifill, mat_elem, ims, npc, ibcl, ibfv, idum, las, laccelm, nnlink, lnlink, iparg, dd_iad, igrv, iexlnk, kinet, ipari, nprw, iconx, npby, lpby, lrivet, nstrf, ljoint, nodpor, monvol, ilink, llink, linale, neflsw, nnflsw, icut, cluster, itask, inoise, thke, damp, pm, skews, geo, eani, bufmat, bufgeo, bufsf, w, veul, fill, dfill, alph, wb, dsave, asave, msnf, tf, forc, vel, fsav, fzero, xlas, accelm, agrv, fr_wave, failwave, parts0, elbuf, rwbuf, sensors, rwsav, rby, rivet, secbuf, volmon, lambda, wa, fv, partsav, uwa, val2, phi, segvar, r, crflsw, flsw, fani, xcut, anin, tani, secfcum, bufnois, idata, rdata, iframe, kxsp, ixsp, nod2sp, ispsym, ispcond, xframe, spbuf, xspsym, vspsym, pv, fsavd, ibvel, lbvel, wasph, w16, isphio, lprtsph, lonfsph, vsphio, fbvel, lagbuf, ibcslag, iactiv, dampr, gjbufi, gjbufr, rbmpc, ibmpc, sphveln, nbrcvois, nbsdvois, lnrcvois, lnsdvois, nercvois, nesdvois, lercvois, lesdvois, npsegcom, lsegcom, nporgeo, ixtg1, npbyl, lpbyl, rbyl, igeo, ipm, madprt, madsh4, madsh3, madsol, madnod, madfail, iad_rby, fr_rby, fr_wall, iad_rby2, fr_rby2, iad_i2m, fr_i2m, addcni2, procni2, iadi2, fr_mv, iadmv2, fr_ll, fr_rl, iadcj, fr_cj, fr_sec, iad_sec, iad_cut, fr_cut, rg_cut, newfront, fr_mad, fxbipm, fxbrpm, fxbnod, fxbmod, fxbglm, fxbcpm, fxbcps, fxblm, fxbfls, fxbdls, fxbdep, fxbvit, fxbacc, fxbelm, fxbsig, fxbgrvi, fxbgrvr, eigipm, eigibuf, eigrpm, lnodpor, fr_i18, graphe, iflow, rflow, lgrav, dd_r2r, fasolfr, fr_lagf, llagf, lprw, icontact, rcontact, sh4tree, sh3tree, ipadmesh, padmesh, msc, mstg, inc, intg, ptg, iskwp, nskwp, isensp, nsensp, iaccp, naccp, ipart_state, acontact, pcontact, factiv, sh4trim, sh3trim, mscnd, incnd, ibfflux, fbfflux, rbym, irbym, lnrbym, icodrbym, ibcv, fconv, ibftemp, fbftemp, iad_rbym, fr_rbym, weight_rm, ms_ply, zi_ply, inod_pxfem, iel_pxfem, iadc_pxfem, adsky_pxfem, icode_ply, icodt_ply, iskew_ply, admsms, madclnod, nom_sect, mcpc, mcptg, dmelc, dmeltg, mssa, dmels, mstr, dmeltr, msp, dmelp, msrt, dmelrt, ibcr, fradia, res_sms, table, irbe2, lrbe2, iad_rbe2, fr_rbe2, phie, msf, procne_pxfem, iadsdp_pxfem, iadrcp_pxfem, icfield, lcfield, cfield, msz2, diag_sms, iloadp, lloadp, loadp, inod_crk, iel_crk, iadc_crk, adsky_crk, cne_crk, procne_crk, iadsdp_crk, iadrcp_crk, ibufssg_io, ibc_ply, dmint2, ibordnode, elbuf_tab, por, nodedge, iad_edge, fr_edge, fr_nbedge, crknodiad, lgauge, gauge, igaup, ngaup, nodlevxf, dd_r2r_elem, nodglobxfe, sph2sol, sol2sph, irst, dmsph, wagap, xfem_tab, elcutc, nodenr, kxfenod2elc, enrtag, rthbu f, kxig3d, ixig3d, knot, wige, wsmcomp, stack, cputime_mp_glob, cputime_mp, tab_ump, poin_ump, sol2sph_typ, irunn_bis, addcsrect, iad_frnor, fr_nor, procnor, iad_fredg, fr_edg, drape_sh4n, drape_sh3n, tab_mat, nativ0_sms, multi_fvm, segquadfr, ms_2d, h3d_data, subsets, igrnod, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring, igrpart, igrsurf, forneqs, nloc_dmg, iskwp_l, knotlocpc, knotlocel, pinch_data, tag_skins6, ale_connectivity, xcell, xface, ne_nercvois, ne_nesdvois, ne_lercvois, ne_lesdvois, ibcscyc, lbcscyc, t_monvol, id_global_vois, face_vois, dynain_data, fcont_max, ebcs_tab, diffusion, kloadpinter, loadpinter, dgaploadint, drapeg, user_windows, output, interfaces, dt, loads, python, dpl0cld, vel0cld, ndamp_vrel, id_damp_vrel, fr_damp_vrel, ndamp_vrel_rbyg, names_and_titles, unitab, liflow, lrflow, glob_therm, pblast, rbe3)