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