45
46
47
54
55
56
57#include "implicit_f.inc"
58
59
60
61#include "com01_c.inc"
62#include "com04_c.inc"
63#include "param_c.inc"
64#include "scr17_c.inc"
65#include "units_c.inc"
66
67
68
69 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
70 INTEGER NOM_OPT(LNOPT1,*)
71 INTEGER IPARI(NPARI,*), NPBY(NNPBY,*),
72 . ICODE(NUMNOD)
73 TYPE(INTSTAMP_DATA) INTSTAMP(*)
74 TYPE(SUBMODEL_DATA) LSUBMODEL(*)
75
76
77
78 INTEGER J, L, NI, NIN, N,
79 . NTYP,NOINT,NSTAMP,IROT,
80 . IFLAGUNIT,UID,FLAG_FMT,FLAG_FMT_TMP,IFIX_TMP,
81 . ID_INTDAMP,INTDAMP, IRB, MSR, P, IC, SUB_ID
83 . fac_l,fac_t,fac_m,fac_i,
84 . damp, dampr
85 CHARACTER MESS*40
86 CHARACTER(LEN=NCHARKEY) :: KEY
87 CHARACTER(LEN=NCHARTITLE) :: TITR
88 LOGICAL IS_AVAILABLE
89
90
91
92 INTEGER USR2SYS
93 DATA mess/'INTERFACE INPUT '/
94
95
96 ni= 0
97 nstamp = 0
98
99
100
101
103
104
105
106 DO nin=1,hm_ninter
107
108
109
110
112 . option_id = noint,
113 . unit_id = uid,
114 . submodel_id = sub_id,
115 . option_titr = titr,
116 . keyword2 = key)
117
118
119
120 IF(key(1:len_trim(key))=='SUB') cycle
121
122 ni=ni+1
123
124 ntyp = ipari(7,ni)
125 noint = ipari(15,ni)
126
127 IF (ntyp == 21) THEN
128
129 nstamp=nstamp+1
130 intstamp(nstamp)%NOINTER=ni
131
132 WRITE(iout,2100) noint
133 is_available = .false.
134
135 CALL hm_get_intv(
'ID_RBY',intstamp(nstamp)%IRB,is_available,lsubmodel)
136 CALL hm_get_intv(
'InterfaceId',id_intdamp,is_available,lsubmodel
137 CALL hm_get_floatv(
'DAMP1',damp,is_available,lsubmodel,unitab)
138 CALL hm_get_floatv(
'DAMP2',dampr,is_available,lsubmodel,unitab)
139
140
141 irb=0
142 DO n=1,nrbody
143 IF(intstamp(nstamp)%IRB==npby(6,n))THEN
144 IF(npby(12,n) == 0) THEN
145 irb=n
146 EXIT
147 ELSE
149 . msgtype=msgerror,
150 . anmode=anstop,
151 . i1=noint,
152 . c1=titr,
153 . i2=intstamp(nstamp)%IRB)
154 ENDIF
155 END IF
156 END DO
157 IF(irb==0)THEN
159 . msgtype=msgerror,
160 . anmode=anstop,
161 . i1=noint,
162 . c1=titr,
163 . i2=intstamp(nstamp)%IRB)
164 END IF
165 intstamp(nstamp)%IRB=irb
166 intstamp(nstamp)%MSR=npby(1,irb)
167 DO p = 1, nspmd
169 ENDDO
170
171 WRITE(iout,2111) id_intdamp,damp
172 intstamp(nstamp)%INTDAMP=id_intdamp
173 intstamp(nstamp)%DAMP=damp
174 irot=1
175 ic=mod(icode(npby(1,irb)),512)
176 IF(ic==448)irot=0
177 IF(irot/=0)THEN
178 WRITE(iout,2112) dampr
179 intstamp(nstamp)%DAMPR=dampr
180 END IF
181 intstamp(nstamp)%IROT=irot
182 END IF
183 END DO
184
185 DO nin=1,nstamp
186 id_intdamp=intstamp(nin)%INTDAMP
187 IF(id_intdamp==0) GOTO 110
188 DO j=1,nstamp
189 IF(ipari(15,intstamp(j)%NOINTER)==id_intdamp)THEN
190 intstamp(nin)%INTDAMP=j
191 GOTO 110
192 END IF
193 END DO
195 . nom_opt(lnopt1-ltitr+1,nin),ltitr)
197 . msgtype=msgerror,
198 . anmode=aninfo_blind_1,
199 . i1=nom_opt(1,nin),
200 . c1=titr,
201 . i2=id_intdamp)
202 110 CONTINUE
203 END DO
204
205 2100 FORMAT(//
206 . ' ADDITIONAL INFO FOR INTERFACE ID. . . . . .',i1/,
207 . ' INTERFACE TYPE. . . . .21',/)
208 2111 FORMAT(' DAMPING WRT REFERENCE INTERFACE . . . . . . .',i10/,
209 . ' (0: DAMPING WRT GLOBAL FRAME). . . .',/,
210 . ' TRANSLATIONAL CRITICAL DAMPING FACTOR . . . .',
211 . 1pg20.13/)
212 2112 FORMAT(' ROTATIONAL CRITICAL DAMPING FACTOR. . . . . .',
213 . 1pg20.13/)
214
215 RETURN
subroutine ifrontplus(n, p)
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_start(entity_type)
integer, parameter nchartitle
integer, parameter ncharkey
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)