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,L,N,NR,MM,ID,IGU,IGS,
86 . NSKEW,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
96 EXTERNAL USR2SYS,NODGRNR6
97
98
99
100
101
102
103
104
105
106
107 WRITE(IOUT,1000)
108
109 IS_AVAILABLE = .FALSE.
110 CALL HM_OPTION_START('/rbody')
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
124 IF(TAGRBY(NRB_R2R) == 0) CALL HM_SZ_R2R(TAGRBY,NRB_R2R,LSUBMODEL)
125 ENDIF
126
127 KEY=''
128 CALL HM_OPTION_READ_KEY(LSUBMODEL,
129 . OPTION_ID = ID,
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 ! TAGRBY is allocated only if NSUBDOM>0
136 IF(TAGRBY(NRB) == 0) CALL HM_SZ_R2R(TAGRBY,NRB,LSUBMODEL)
137 ENDIF
138
139 NOM_OPT(1,NRB)=ID
140 CALL FRETITL(TITR,NOM_OPT(LNOPT1-LTITR+1,NRB),LTITR)
141
142 CALL HM_GET_INTV('node_id',MM,IS_AVAILABLE,LSUBMODEL)
143 MM = USR2SYS(MM,ITABM1,MESS,ID)
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
152 CALL ANCMSG(MSGID=352,
153 . MSGTYPE=MSGWARNING,
154 . ANMODE=ANINFO_BLIND_2,
155 . I1=ID,
156 . C1=TITR)
157 ENDIF
158 CALL ANODSET(MM, CHECK_RB_M)
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
170 NPBYL(6,NRB) = ID
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 ! IF(KEY(1:6)=='lagmul')THEN
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)
integer, parameter nchartitle
integer, parameter ncharkey