OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_rbody_lagmul.F File Reference
#include "implicit_f.inc"
#include "analyse_name.inc"
#include "units_c.inc"
#include "param_c.inc"
#include "lagmult.inc"
#include "scr17_c.inc"
#include "com04_c.inc"
#include "r2r_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine hm_read_rbody_lagmul (rbyl, npbyl, lpbyl, igrnod, lsubmodel, itab, itabm1, ikine, ikine1lag, nom_opt)

Function/Subroutine Documentation

◆ hm_read_rbody_lagmul()

subroutine hm_read_rbody_lagmul ( rbyl,
integer, dimension(nnpby,*) npbyl,
integer, dimension(*) lpbyl,
type (group_), dimension(ngrnod) igrnod,
type(submodel_data), dimension(*), intent(in) lsubmodel,
integer, dimension(*) itab,
integer, dimension(*) itabm1,
integer, dimension(*) ikine,
integer, dimension(*) ikine1lag,
integer, dimension(lnopt1,*) nom_opt )

Definition at line 44 of file hm_read_rbody_lagmul.F.

46C-----------------------------------------------
47C M o d u l e s
48C-----------------------------------------------
49 USE groupdef_mod
50 USE message_mod
51 USE r2r_mod
52 USE submodel_mod
55C-----------------------------------------------
56C I m p l i c i t T y p e s
57C-----------------------------------------------
58#include "implicit_f.inc"
59C-----------------------------------------------
60C A n a l y s e M o d u l e
61C-----------------------------------------------
62#include "analyse_name.inc"
63C-----------------------------------------------
64C C o m m o n B l o c k s
65C-----------------------------------------------
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"
72C-----------------------------------------------
73C D u m m y A r g u m e n t s
74C-----------------------------------------------
75 INTEGER NPBYL(NNPBY,*),LPBYL(*),
76 . ITAB(*), ITABM1(*),IKINE(*),IKINE1LAG(*)
77 my_real rbyl(nrby,*)
78 INTEGER NOM_OPT(LNOPT1,*)
79C-----------------------------------------------
80 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
81 TYPE(SUBMODEL_DATA),INTENT(IN)::LSUBMODEL(*)
82C-----------------------------------------------
83C L o c a l V a r i a b l e s
84C-----------------------------------------------
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'/
92C-----------------------------------------------
93C E x t e r n a l F u n c t i o n s
94C-----------------------------------------------
95 INTEGER USR2SYS,NODGRNR6
96 EXTERNAL USR2SYS,NODGRNR6
97C-----------------------------------
98C NPBYL(1,N) = MAIN NODE
99C NPBYL(2,N) = NUMBER OF SECONDARY NODES + MAIN
100C NPBYL(3,N) =
101C NPBYL(4,N) =
102C NPBYL(5,N) =
103C NPBYL(6,N) = IDENTIFICATEUR
104C NPBYL(7,N) =
105C NPBYL(8,N) =
106C======================================================================|
107 WRITE(IOUT,1000)
108C---
109 IS_AVAILABLE = .FALSE.
110 CALL HM_OPTION_START('/rbody')
111C---
112 K = 0
113 NRB = 0
114 NRB_R2R = 0
115C
116 DO NR=1,NRBODY
117C
118C--------------------------------------------------
119C EXTRACT DATAS OF /RBODY/... LINE
120C--------------------------------------------------
121C
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
126C
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
138C---
139 NOM_OPT(1,NRB)=ID
140 CALL FRETITL(TITR,NOM_OPT(LNOPT1-LTITR+1,NRB),LTITR)
141C---
142 CALL HM_GET_INTV('node_id',MM,IS_AVAILABLE,LSUBMODEL)
143 MM = USR2SYS(MM,ITABM1,MESS,ID)
144C---
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
148C---
149 LPBYL(K+MSL) = MM
150C---
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
162C---
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
167C---
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
173C---
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
180C---
181 RETURN
182C------------------------------
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)
#define my_real
Definition cppsort.cpp:32
initmumps id
integer, parameter nchartitle
integer, parameter ncharkey