45
46
47
53
54
55
56#include "implicit_f.inc"
57
58
59
60#include "com04_c.inc"
61#include "scr17_c.inc"
62#include "param_c.inc"
63
64
65
66 INTEGER :: NIMPDISP,NIMPVEL
67 INTEGER ,DIMENSION(*) :: ITAB,ITABM1,IKINE,IKINE1LAG,IPARTR
68 INTEGER ,DIMENSION(LISKN,*) ,INTENT(IN) :: ISKN
69 INTEGER ,DIMENSION(LIPART1,*) ,INTENT(IN) ::
70 INTEGER ,DIMENSION(NIXR,*) ,INTENT(IN) :: IXR
71 INTEGER ,DIMENSION(LNOPT1,*) ,INTENT(OUT) :: NOM_OPT
72 INTEGER ,DIMENSION(NIFV,NFXVEL) ,INTENT(OUT) :: IBFVEL
73 my_real ,
DIMENSION(LFXVELR,NFXVEL) ,
INTENT(OUT) :: fbfvel
74 TYPE(UNIT_TYPE_),INTENT(IN) :: UNITAB
75 my_real ,
DIMENSION(3,NUMNOD) ,
INTENT(IN) :: x0
76 TYPE (GROUP_) ,DIMENSION(NGRNOD) ,INTENT(IN) :: IGRNOD
77 TYPE(SUBMODEL_DATA),DIMENSION(*) ,INTENT(IN) :: LSUBMODEL
78
79
80
81 INTEGER IOPT,INUM,NOPT,NFDISP,NFVEL,FGEOD,FGEOV,NIMPDISP_0,LAGMULV
82 INTEGER ,DIMENSION(:), ALLOCATABLE :: OPTID
83 CHARACTER(nchartitle) :: MESS
84
85
86
87 DATA mess/'IMPOSED VELOCITY DEFINITION '/
88
89 inum = 0
90 iopt = 0
91
92
93
94
96 nimpdisp_0 = nimpdisp
98
102
103 nfdisp = nimpdisp - fgeod
104 nfvel = nimpvel - fgeov - lagmulv
105 nopt = nfdisp + nfvel
106
107
108 IF (nimpdisp > 0) THEN
109
110 IF (nfdisp > 0) THEN
112 . nimpdisp ,inum ,iopt ,fbfvel ,ibfvel
113 . itab ,itabm1 ,ikine ,igrnod ,nom_opt ,
114 . iskn ,unitab ,lsubmodel)
115 ENDIF
116
117 IF (fgeod > 0) THEN
119 . fgeod ,inum ,iopt ,fbfvel ,ibfvel ,
120 . itab ,itabm1 ,igrnod ,nom_opt ,x0 ,
121 . ixr ,ipart ,ipartr ,unitab ,lsubmodel)
122 ENDIF
123
124
125
126 ALLOCATE( optid(nimpdisp) )
127 optid(1:nimpdisp) = nom_opt(1,1:nimpdisp)
128 CALL udouble(optid,1,nimpdisp,mess,0,zero)
129 DEALLOCATE( optid )
130
131 END IF
132 nimpdisp = inum
133
134
135
136
137 IF (nimpvel > 0) THEN
138
139
140 IF (nfvel > 0) THEN
142 . nimpvel ,inum ,iopt ,fbfvel ,ibfvel ,
143 . itab ,itabm1 ,ikine ,ikine1lag,nom_opt ,
144 . igrnod ,iskn ,unitab ,lsubmodel)
145 END IF
146
147
148
149 IF (fgeov > 0) THEN
151 . fgeov ,inum ,iopt ,fbfvel ,ibfvel ,
152 . itab ,itabm1 ,igrnod ,nom_opt ,x0 ,
153 . ixr ,ipart ,ipartr ,unitab ,lsubmodel)
154 END IF
155
156
157
158 IF (lagmulv > 0) THEN
160 . lagmulv ,inum ,iopt ,fbfvel ,ibfvel ,
161 . itab ,itabm1 ,igrnod ,nom_opt ,x0 ,
162 . ixr ,ipart ,ipartr ,iskn ,ikine ,
163 . unitab ,lsubmodel)
164 END IF
165
166
167
168 ALLOCATE( optid(nimpvel) )
169 optid(1:nimpvel) = nom_opt(1,nimpdisp_0+1:nimpvel+nimpdisp_0)
170 CALL udouble(optid,1,nimpvel,mess,0,zero)
171 DEALLOCATE( optid )
172
173 END IF
174
175 nimpvel = inum - nimpdisp
176 nfxvel = inum
177
178 RETURN
subroutine hm_option_count(entity_type, hm_option_number)
subroutine read_impdisp(ndisp, inum, iopt, fbfvel, ibfvel, itab, itabm1, ikine, igrnod, nom_opt, iskn, unitab, lsubmodel)
subroutine read_impdisp_fgeo(nfgeo, inum, iopt, fbfvel, ibfvel, itab, itabm1, igrnod, nom_opt, x0, ixr, ipart, ipartr, unitab, lsubmodel)
subroutine read_impvel(nfvel, inum, iopt, fbfvel, ibfvel, itab, itabm1, ikine, ikine1lag, nom_opt, igrnod, iskn, unitab, lsubmodel)
subroutine read_impvel_fgeo(nfgeo, inum, iopt, fbfvel, ibfvel, itab, itabm1, igrnod, nom_opt, x0, ixr, ipart, ipartr, unitab, lsubmodel)
subroutine read_impvel_lagmul(nlagmul, inum, iopt, fbfvel, ibfvel, itab, itabm1, igrnod, nom_opt, x0, ixr, ipart, ipartr, iskn, ikine, unitab, lsubmodel)
subroutine udouble(list, ilist, nlist, mess, ir, rlist)