42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 USE my_alloc_mod
66
67
68
69#include "implicit_f.inc"
70
71
72
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"
80
81
82
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
88
89
90
91 CHARACTER(LEN=4096) :: SCR_FILE_NAME
92 CHARACTER(LEN=ncharline) :: RLINE
93 CHARACTER (LEN=4) :: CWIN
94 CHARACTER(LEN=nchartitle) :: TITLE
95 CHARACTER(LEN=ncharkey) :: KEY
96 LOGICAL :: IS_AVAILABLE
97 INTEGER ,DIMENSION(100) :: IUPARAM
98 INTEGER NLINES,I,J,STAT,USERWI_ID
99 INTEGER SCR_FILE_NAME_LEN
100 INTEGER NUVAR,NUVARI
101
102 CHARACTER OPTION*256
103 INTEGER SIZE
104
105 is_available = .false.
106
107 IF (userl_avail == 0)THEN
108
109 option='/USERWI'
110 size=len_trim(option)
112 . msgtype=msgerror,c1=option(1:size),anmode=aninfo
114 ENDIF
115
117
119 * option_id = userwi_id)
120
121 user_windows%USER_WINDOWS_ID = userwi_id
122
123 CALL hm_get_intv (
'Number_of_datalines' ,nlines ,is_available, lsubmodel
124
125
126 WRITE(cwin,'(I4.4)') 1
127 scr_file_name='SI'//rootnam(1:rootlen)//'_'//cwin//'.scr'
128 scr_file_name_len=len_trim(scr_file_name)
129 OPEN(unit=30,file=trim(scr_file_name),form=
'FORMATTED',recl=
ncharline)
130 WRITE(30,'(A)') '/USERWI'
131
132 IF (nlines > 0) THEN
133
134
135 DO j=1,nlines
137 WRITE(30,fmt='(A)')trim(rline)
138 ENDDO
139
140 ENDIF
141
142 CLOSE(unit=30)
143
144
145 iuparam = 0
146 user_windows%NUVAR = 0
147 user_windows%NUVARI = 0
148
149 CALL st_userlib_userwis_ini(rootnam,rootlen,
150 . iuparam ,numnod ,itab,
151 . x ,v ,vr ,ms ,in ,
152 . nuvar ,nuvari )
154
155 user_windows%NUVAR = nuvar
156 user_windows%NUVARI = nuvari
157
158 user_windows%S_USER = nuvar
159 user_windows%S_IUSER = nuvari+100
160
161 CALL my_alloc(user_windows%IUSER,user_windows%S_IUSER)
162 CALL my_alloc(user_windows%USER,user_windows%S_USER)
163
164 user_windows%USER(1:user_windows%S_USER) = zero
165 user_windows%IUSER(1:user_windows%S_IUSER) = 0
166
167 user_windows%IUSER(nuvari+1:nuvari+100)=iuparam(1:100)
168
169
170
171 WRITE(cwin,'(I4.4)') 1
172 scr_file_name='SI'//rootnam(1:rootlen)//'_'//cwin//'.scr'
173 scr_file_name_len=len_trim(scr_file_name)
174 OPEN(unit=30,file=trim(scr_file_name),form=
'FORMATTED',recl=
ncharline)
175 WRITE(30,'(A)') '/USERWI'
176
177
178 DO j=1,nlines
180 WRITE(30,fmt='(A)')trim(rline)
181 ENDDO
182 CLOSE(unit=30)
183
184 CALL st_userlib_userwis(rootnam, rootlen, numnod, itab,
185 . x, v, vr, ms, in,
186 . user_windows%NUVAR, user_windows%NUVARI,
187 . user_windows%USER, user_windows%IUSER )
188
190
191
192 RETURN
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)
subroutine user_output(iout, ilaw, rootn, rootlen, inpf)