46
47
48
55
56
57
58#include "implicit_f.inc"
59
60
61
62#include "analyse_name.inc"
63
64
65
66#include "units_c.inc"
67#include "param_c.inc"
68#include "lagmult.inc"
69#include "scr17_c.inc"
70#include "com04_c.inc"
71#include "r2r_c.inc"
72
73
74
75 INTEGER NPBYL(NNPBY,*),LPBYL(*),
76 . ITAB(*), ITABM1(*),IKINE(*),IKINE1LAG(*)
78 INTEGER NOM_OPT(LNOPT1,*)
79
80 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
81 TYPE(SUBMODEL_DATA),INTENT(IN)::LSUBMODEL(*)
82
83
84
85 INTEGER J,K,NR,MM,ID,IGU,IGS,
86 . NSL,MSL,SUB_INDEX,NRB,NRB_R2R
87 CHARACTER MESS*40
88 CHARACTER(LEN=NCHARTITLE) :: TITR
89 CHARACTER(LEN=NCHARKEY) :: KEY
90 LOGICAL IS_AVAILABLE
91 DATA mess/'RIGID BODY DEFINITIONS'/
92
93
94
95 INTEGER USR2SYS,NODGRNR6
97
98
99
100
101
102
103
104
105
106
107 WRITE(iout,1000)
108
109 is_available = .false.
111
112 k = 0
113 nrb = 0
114 nrb_r2r = 0
115
116 DO nr=1,nrbody
117
118
119
120
121
122 nrb_r2r = nrb_r2r + 1
123 IF (nsubdom > 0) THEN
125 ENDIF
126
127 key=''
130 . option_titr = titr,
131 . keyword2 = key,
132 . submodel_index = sub_index)
133 IF(key(1:6)=='LAGMUL')THEN
134 nrb = nrb + 1
135 IF (nsubdom > 0) THEN
137 ENDIF
138
140 CALL fretitl(titr,nom_opt(lnopt1-ltitr+1,nrb),ltitr)
141
142 CALL hm_get_intv(
'node_ID',mm,is_available,lsubmodel)
144
145 CALL hm_get_intv(
'grnd_ID',igu,is_available,lsubmodel)
146 nsl =
nodgrnr6(mm,igu,igs,lpbyl(k+1),igrnod,itabm1,mess,
id)
147 msl = nsl+1
148
149 lpbyl(k+msl) = mm
150
151 IF (nsl == 0) THEN
153 . msgtype=msgwarning,
154 . anmode=aninfo_blind_2,
156 . c1=titr)
157 ENDIF
159 DO j=1, nsl
160 CALL anodset(lpbyl(j+k), check_rb_s)
161 ENDDO
162
163 DO j=1,msl
164 CALL kinset(512,itab(lpbyl(j+k)),ikine(lpbyl(j+k)),7,0,
165 . ikine1lag(lpbyl(j+k)))
166 ENDDO
167
168 npbyl(1,nrb) = mm
169 npbyl(2,nrb) = msl
171 lag_ncl = lag_ncl + nsl*6
172 lag_nkl = lag_nkl + nsl*21
173
174 WRITE(iout,1100)
id,trim(titr),itab(mm),msl
175 WRITE(iout,1101)
176 WRITE(iout,1102) (itab(lpbyl(j+k)),j=1,nsl)
177 k = k + 3*msl
178 END IF
179 ENDDO
180
181 RETURN
182
1831000 FORMAT(
184 . /' RIGID BODY DEFINITIONS (LAGRANGE MULTIPLIERS)'
185 . /' -------------------------------------------- '/)
1861100 FORMAT( /5x,'RIGID BODY ID ',i10,1x,a,
187 . /10x,'PRIMARY NODE ',i10
188 . /10x,'NUMBER OF NODES ',i10)
1891101 FORMAT( 10x,'SECONDARY NODES ')
1901102 FORMAT( 9x,10i10)
void anodset(int *id, int *type)
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, dimension(:), allocatable tagrby
subroutine hm_sz_r2r(tag, val, lsubmodel)
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)
integer function usr2sys(iu, itabm1, mess, id)