47
48
49
56 USE format_mod , ONLY : fmw_10i
57
58
59
60#include "implicit_f.inc"
61
62
63
64#include "com01_c.inc"
65#include "com04_c.inc"
66#include "units_c.inc"
67#include "scr03_c.inc"
68#include "scr17_c.inc"
69#include "param_c.inc"
70#include "r2r_c.inc"
71#include "sphcom.inc"
72
73
74
75 INTEGER NNLINK(10,*), LLLINK(*), ITAB(*), ITABM1(*),
76 . IKINE(*),ISKN(LISKN,*),IFRAME(LISKN,*)
77 INTEGER NOM_OPT(LNOPT1,*)
78 TYPE(SUBMODEL_DATA) LSUBMODEL(*)
79
80 TYPE (GROUP_) ,TARGET, DIMENSION(NGRNOD) :: IGRNOD
81
82
83
84 INTEGER K, N, NSL, NUSER, J, I, IGU,IC,ICR,J10(10),
85 . IGRS, NOSYS,J6(6),IS,IPOL,IDIR,ISL,IKINE1(3*NUMNOD),NLK
86 CHARACTER MESS*40,CODE*7
87 CHARACTER(LEN=NCHARKEY) :: KEY
88 CHARACTER(LEN=NCHARTITLE) :: TITR
89 CHARACTER(LEN=NCHARFIELD) :: STRING
91
92
93
94 INTEGER USR2SYS, NGR2USR
95
96 INTEGER, DIMENSION(:), POINTER :: INGR2USR
97
98 DATA mess/'STANDARD RIGID LINK DEFINITION '/
99
100 LOGICAL IS_AVAILABLE
101
102 is_available = .false.
103
104 nsl = 0
105 k=0
106 WRITE(iout,1000)
107 nlk = 0
108
109
111
112
113 DO i=1,3*numnod
114 ikine1(i) = 0
115 ENDDO
116
117 DO n=1,nlink
118
119
120
121 nlk=nlk+1
122
123 IF(nsubdom > 0)THEN
125 END IF
126
128 . option_id = nuser,
129 . option_titr = titr)
130 nom_opt(1,n) = nuser
131 CALL fretitl(titr,nom_opt(lnopt1-ltitr+1,n),ltitr)
132
133
134 CALL hm_get_intv(
'Tx' ,j6(1) ,is_available,lsubmodel)
135 CALL hm_get_intv(
'Ty' ,j6(2) ,is_available,lsubmodel)
136 CALL hm_get_intv(
'Tz' ,j6(3) ,is_available,lsubmodel)
137 CALL hm_get_intv(
'OmegaX' ,j6(4) ,is_available,lsubmodel)
138 CALL hm_get_intv(
'OmegaY' ,j6(5) ,is_available,lsubmodel)
139 CALL hm_get_intv(
'OmegaZ' ,j6(6) ,is_available,lsubmodel)
140
141 CALL hm_get_intv(
'SKEW_CSID' ,is ,is_available,lsubmodel)
142 CALL hm_get_intv(
'dependentnodeset' ,igu ,is_available,lsubmodel)
143 CALL hm_get_intv(
'RLINK_IPOL' ,ipol,is_available,lsubmodel)
144
145 ic =j6(1)*4 +j6(2)*2 +j6(3)
146 icr=j6(4)*4 +j6(5)*2 +j6(6)
147 IF (icr > 0.AND.iroddl==0) THEN
149 . msgtype=msgwarning,
150 . anmode=aninfo_blind_1,
151 . i1=nuser,
152 . c1=titr)
153 END IF
154
155
156
157
158
159 nsl = 0
160 ingr2usr => igrnod(1:ngrnod)%ID
161 igrs=
ngr2usr(igu,ingr2usr,ngrnod)
162 IF(igrs /= 0)THEN
163 DO j=1,igrnod(igrs)%NENTITY
164 nsl = nsl + 1
165 lllink(k+nsl)=igrnod(igrs)%ENTITY(j)
166 ENDDO
167 ENDIF
168
169
170
171
172 DO j=1,nsl
173 DO idir=1,6
174 CALL kinset(1024,itab(lllink(j+k)),ikine(lllink(j+k)),
175 . idir,0,ikine1(lllink(j+k)))
176 ENDDO
177 ENDDO
178
179
180
181 IF(ipol == 0)THEN
182 WRITE(iout,1100) nuser,trim(titr),j6,is,nsl
183 ELSE
184 WRITE(iout,1200) nuser,trim(titr),j6,is,nsl
185 ENDIF
186
187 IF(ipri >= 1) THEN
188 WRITE(iout,'(/10X,A)')'SECONDARY NODES : '
189 WRITE(iout,fmt=fmw_10i) (itab(lllink(i+k)),i=1,nsl)
190 WRITE(iout,'(//)')
191 ENDIF
192 IF(ipol == 0)THEN
193 DO 640 j=0,numskw+
min(1,nspcond)*numsph+
nsubmod
194 IF(is == iskn(4,j+1)) THEN
195 is=j+1
196 GO TO 660
197 ENDIF
198 640 CONTINUE
199
201 . msgtype=msgerror,
202 . anmode=aninfo,
203 . c1='RIGID LINK',
204 . i1=nuser,
205 . c2='RIGID LINK',
206 . c3=titr,
207 . i2=is)
208 660 CONTINUE
209 ELSE
210 DO j=0,numfram
211 IF(is==iframe(4,j+1)) THEN
212 is=j+1
213 GO TO 661
214 ENDIF
215 ENDDO
216 WRITE(istdo,*)' ** ERROR WRONG FRAME NUMBER'
217 WRITE(iout,*)' ** ERROR WRONG FRAME NUMBER'
218 ierr=ierr+1
219 661 CONTINUE
220 ENDIF
221 nnlink(1,n)=nsl
222 nnlink(2,n)=nuser
223 nnlink(3,n)=ic
224 nnlink(4,n)=icr
225 nnlink(5,n)=is
226 nnlink(6,n)=ipol
227
228 k = k+nsl
229 ENDDO
230
231
232
233 CALL udouble(nom_opt,lnopt1,nlink,mess,0,bid)
234 RETURN
235
236 1000 FORMAT(
237 . ' RIGID LINK DEFINITIONS '/
238 . ' ---------------------- '/)
239 1100 FORMAT(/10x,'RIGID LINK NUMBER . . . .',i10,/,a,
240 . /10x,'DOF ( X,Y,Z, XX,YY,ZZ). . ',3i1,2x,3i1
241 . /10x,'SKEW FRAME. . . . . . . .',i10
242 . /10x,'NUMBER OF NODES . . . . .',i10,//)
243 1200 FORMAT(/10x,'POLAR RIGID LINK NUMBER .',i10,/,a,
244 . /10x,'DOF ( X,Y,Z, XX,YY,ZZ). . ',3i1,2x,3i1
245 . /10x,'POLAR FRAME . . . . . . .',i10
246 . /10x,'NUMBER OF NODES . . . . .',i10,//)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_start(entity_type)
subroutine kinset(ik, node, ikine, idir, isk, ikine1)
integer, parameter nchartitle
integer, parameter ncharkey
integer, parameter ncharfield
integer, dimension(:), allocatable taglnk
integer function ngr2usr(iu, igr, ngr)
subroutine sz_r2r(tag, val)
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 udouble(list, ilist, nlist, mess, ir, rlist)