OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_window_user.F File Reference
#include "implicit_f.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "scr15_c.inc"
#include "scr17_c.inc"
#include "units_c.inc"
#include "userlib.inc"
#include "tabsiz_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine hm_read_window_user (user_windows, lsubmodel, itab, x, v, vr, ms, in)

Function/Subroutine Documentation

◆ hm_read_window_user()

subroutine hm_read_window_user ( type(user_windows_), intent(inout) user_windows,
type(submodel_data), dimension(*), intent(in) lsubmodel,
integer, dimension(numnod), intent(in) itab,
intent(in) x,
intent(in) v,
intent(in) vr,
intent(in) ms,
intent(in) in )

Definition at line 40 of file hm_read_window_user.F.

42C-----------------------------------------------
43C ROUTINE DESCRIPTION :
44C ===================
45C Read user global windows - generic routine
46C------------------------------------------------------------------
47C DUMMY ARGUMENTS DESCRIPTION:
48C ===================
49C
50C NAME DESCRIPTION
51C
52C USERL_AVAIL Flag if userlibrary was load
53C IS_AVAILABLE Bool / Result of HM_interface
54C LSUBMODEL SUBMODEL Structure.
55C------------------------------------------------------------------
56C
57C-----------------------------------------------
58C M o d u l e s
59C-----------------------------------------------
60 USE my_alloc_mod
61 USE message_mod
62 USE submodel_mod
66C-----------------------------------------------
67C I m p l i c i t T y p e s
68C-----------------------------------------------
69#include "implicit_f.inc"
70C-----------------------------------------------
71C C o m m o n B l o c k s
72C-----------------------------------------------
73#include "com01_c.inc"
74#include "com04_c.inc"
75#include "scr15_c.inc"
76#include "scr17_c.inc"
77#include "units_c.inc"
78#include "userlib.inc"
79#include "tabsiz_c.inc"
80C-----------------------------------------------
81C D u m m y A r g u m e n t s
82C-----------------------------------------------
83 TYPE(USER_WINDOWS_),INTENT(INOUT) :: USER_WINDOWS
84 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(*)
85 INTEGER, DIMENSION(NUMNOD),INTENT(IN) :: ITAB
86 my_real, DIMENSION(3,NUMNOD),INTENT(IN) :: x, v, vr
87 my_real, DIMENSION(NUMNOD),INTENT(IN) :: ms,in
88C-----------------------------------------------
89C L o c a l V a r i a b l e s
90C-----------------------------------------------
91 CHARACTER(LEN=4096) :: SCR_FILE_NAME
92 CHARACTER(LEN=ncharline) :: RLINE
93 CHARACTER (LEN=4) :: CWIN
94 LOGICAL :: IS_AVAILABLE
95 INTEGER ,DIMENSION(100) :: IUPARAM
96 INTEGER :: NLINES,J,USERWI_ID
97 INTEGER :: SCR_FILE_NAME_LEN
98 INTEGER :: NUVAR,NUVARI
99!
100 CHARACTER OPTION*256
101 INTEGER SIZE
102C-----------------------------------------------
103 is_available = .false.
104!
105 IF (userl_avail == 0)THEN
106 ! ERROR to be printed & exit
107 option='/USERWI'
108 size=len_trim(option)
109 CALL ancmsg(msgid=1130,
110 . msgtype=msgerror,c1=option(1:size),anmode=aninfo)
111 CALL arret(2)
112 ENDIF
113
114 CALL hm_option_start('/USERWI')
115!
116 CALL hm_option_read_key(lsubmodel,
117 * option_id = userwi_id)
118
119 user_windows%USER_WINDOWS_ID = userwi_id
120
121 CALL hm_get_intv ('Number_of_datalines' ,nlines ,is_available, lsubmodel)
122
123 ! Create tempo file
124 WRITE(cwin,'(I4.4)') 1
125 scr_file_name='SI'//rootnam(1:rootlen)//'_'//cwin//'.scr'
126 scr_file_name_len=len_trim(scr_file_name)
127 OPEN(unit=30,file=trim(scr_file_name),form='FORMATTED',recl=ncharline)
128 WRITE(30,'(A)') '/USERWI'
129!
130 IF (nlines > 0) THEN
131
132 ! Read & Dump in scratch file
133 DO j=1,nlines
134 CALL hm_get_string_index('arraydatalines', rline, j, ncharline, is_available)
135 WRITE(30,fmt='(A)')trim(rline)
136 ENDDO
137
138 ENDIF ! IF (NLINES > 0)
139!
140 CLOSE(unit=30)
141
142C----- memory (user buffer length estimation)
143 iuparam = 0
144 user_windows%NUVAR = 0
145 user_windows%NUVARI = 0
146!
147 CALL st_userlib_userwis_ini(rootnam,rootlen,
148 . iuparam ,numnod ,itab,
149 . x ,v ,vr ,ms ,in ,
150 . nuvar ,nuvari )
151 CALL user_output(iout,1,rootnam,rootlen,1)
152!
153 user_windows%NUVAR = nuvar
154 user_windows%NUVARI = nuvari
155
156 user_windows%S_USER = nuvar
157 user_windows%S_IUSER = nuvari+100
158
159 CALL my_alloc(user_windows%IUSER,user_windows%S_IUSER)
160 CALL my_alloc(user_windows%USER,user_windows%S_USER)
161
162 user_windows%USER(1:user_windows%S_USER) = zero
163 user_windows%IUSER(1:user_windows%S_IUSER) = 0
164
165 user_windows%IUSER(nuvari+1:nuvari+100)=iuparam(1:100)
166
167
168C----- Scratch file initialisation
169 WRITE(cwin,'(I4.4)') 1
170 scr_file_name='SI'//rootnam(1:rootlen)//'_'//cwin//'.scr'
171 scr_file_name_len=len_trim(scr_file_name)
172 OPEN(unit=30,file=trim(scr_file_name),form='FORMATTED',recl=ncharline)
173 WRITE(30,'(A)') '/USERWI'
174
175 ! Read & Dump in scratch file
176 DO j=1,nlines
177 CALL hm_get_string_index('arraydatalines', rline, j, ncharline, is_available)
178 WRITE(30,fmt='(A)')trim(rline)
179 ENDDO
180 CLOSE(unit=30)
181!
182 CALL st_userlib_userwis(rootnam, rootlen, numnod, itab,
183 . x, v, vr, ms, in,
184 . user_windows%NUVAR, user_windows%NUVARI,
185 . user_windows%USER, user_windows%IUSER )
186
187 CALL user_output(iout,1,rootnam,rootlen,1)
188!
189!---------
190 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_get_string_index(name, sval, index, size, is_available)
subroutine hm_option_start(entity_type)
integer, parameter nchartitle
integer, parameter ncharkey
integer, parameter ncharline
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:895
subroutine arret(nn)
Definition arret.F:86
subroutine user_output(iout, ilaw, rootn, rootlen, inpf)
Definition user_output.F:38