OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_alebcs.F File Reference
#include "implicit_f.inc"
#include "scr17_c.inc"
#include "com04_c.inc"
#include "param_c.inc"
#include "scr10_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine hm_read_alebcs (icode, iskew, itab, itabm1, ikine, igrnod, ibcslag, lag_ncf, lag_nkf, lag_nhf, ikine1lag, iskn, nom_opt, lsubmodel)

Function/Subroutine Documentation

◆ hm_read_alebcs()

subroutine hm_read_alebcs ( integer, dimension(numnod), intent(inout) icode,
integer, dimension(*), intent(inout) iskew,
integer, dimension(numnod), intent(in) itab,
integer, dimension(*), intent(in) itabm1,
integer, dimension(*), intent(in) ikine,
type (group_), dimension(ngrnod), target igrnod,
integer, dimension(5,*), intent(in) ibcslag,
integer, intent(in) lag_ncf,
integer, intent(in) lag_nkf,
integer, intent(in) lag_nhf,
integer, dimension(*), intent(in) ikine1lag,
integer, dimension(liskn,*), intent(in) iskn,
integer, dimension(lnopt1,*), intent(in) nom_opt,
type(submodel_data), dimension(nsubmod), intent(in) lsubmodel )

Definition at line 39 of file hm_read_alebcs.F.

42C-----------------------------------------------
43C D e s c r i p t i o n
44C-----------------------------------------------
45C This subroutine is reading /ALE/BCS options in user input file
46C-----------------------------------------------
47C M o d u l e s
48C-----------------------------------------------
49 USE message_mod
50 USE groupdef_mod
51 USE submodel_mod
54C-----------------------------------------------
55C I m p l i c i t T y p e s
56C-----------------------------------------------
57#include "implicit_f.inc"
58C-----------------------------------------------
59C C o m m o n B l o c k s
60C-----------------------------------------------
61#include "scr17_c.inc"
62#include "com04_c.inc"
63#include "param_c.inc"
64#include "scr10_c.inc"
65C-----------------------------------------------
66C D u m m y A r g u m e n t s
67C-----------------------------------------------
68 INTEGER,INTENT(IN) :: ITAB(NUMNOD), ITABM1(*), IKINE(*), IBCSLAG(5,*), LAG_NCF,LAG_NKF,LAG_NHF,IKINE1LAG(*),ISKN(LISKN,*)
69 INTEGER,INTENT(IN) :: NOM_OPT(LNOPT1,*)
70 INTEGER,INTENt(INOUT) :: ISKEW(*),ICODE(NUMNOD)
71 TYPE(SUBMODEL_DATA), INTENT(IN), DIMENSION(NSUBMOD) :: LSUBMODEL
72C-----------------------------------------------
73 TYPE (GROUP_) ,TARGET, DIMENSION(NGRNOD) :: IGRNOD
74C-----------------------------------------------
75C L o c a l V a r i a b l e s
76C-----------------------------------------------
77 INTEGER I, IC, N, IS, IC1, IC2,
78 . NOSYS, J,IGR,IGRS,J6(6),
79 . ID ,
80 . CHKCOD,SUB_INDEX
81 INTEGER IUN
82 CHARACTER MESS*40,CODE*7
83 CHARACTER(LEN=NCHARFIELD) :: STRING
84 CHARACTER(LEN=NCHARTITLE) :: TITR
85 LOGICAL :: IS_AVAILABLE, FOUND
86C-----------------------------------------------
87C E x t e r n a l F u n c t i o n s
88C-----------------------------------------------
89 INTEGER MY_OR,CHECK_NEW,NGR2USR
90 INTEGER, DIMENSION(:), POINTER :: INGR2USR
91C-----------------------------------------------
92C D a t a
93C-----------------------------------------------
94 DATA iun/1/
95 DATA mess/'BOUNDARY CONDITIONS '/
96C-----------------------------------------------
97C S o u r c e L i n e s
98C-----------------------------------------------
99 is_available = .false.
100 sub_index = 0
101
102 CALL hm_option_start('/ALE/BCS')
103
104 DO i = 1, nalebcs
105 CALL hm_option_read_key(lsubmodel,
106 . option_id = id,
107 . option_titr = titr,
108 . submodel_index = sub_index)
109 CALL hm_get_string('dofstring', string, ncharfield, is_available)
110 CALL hm_get_intv('inputsystem', is, is_available, lsubmodel)
111 IF(is == 0 .AND. sub_index /= 0 ) is = lsubmodel(sub_index)%SKEW
112 CALL hm_get_intv('entityid', igr, is_available, lsubmodel)
113 found = .false.
114 DO j = 0, numskw + nsubmod
115 IF(is == iskn(4, j + 1)) THEN
116 is = j + 1
117 found = .true.
118 EXIT
119 ENDIF
120 ENDDO
121 IF (.NOT. found) THEN
122 CALL ancmsg(msgid = 137, anmode = aninfo, msgtype = msgerror,
123 . c1 = 'BOUNDARY CONDITION', c2 = 'BOUNDARY CONDITION',
124 . i2 = is, i1 = n, c3 = titr)
125 ENDIF
126! CODE = STRING(LFIELD - 6 : LFIELD)
127 code = string(1:7)
128 READ(code,fmt='(3I1,1X,3I1)') j6
129 chkcod = 0
130 DO j=1,6
131 IF (j6(j) >= 2) THEN
132 chkcod = 1
133 ENDIF
134 ENDDO
135 IF (chkcod == 1) THEN
136 CALL ancmsg(msgid = 1051, anmode = aninfo_blind,msgtype = msgerror, i1 = id, c1 = titr, c2 = code)
137 ENDIF
138 ic1=j6(1)*4 +j6(2)*2 +j6(3)
139 ic2=j6(4)*4 +j6(5)*2 +j6(6)
140 ic=ic1*8+ic2
141 ingr2usr => igrnod(1:ngrnod)%ID
142 igrs=ngr2usr(igr,ingr2usr,ngrnod)
143 IF(igrs /= 0)THEN
144 DO j=1,igrnod(igrs)%NENTITY
145 nosys=igrnod(igrs)%ENTITY(j)
146 icode(nosys)=my_or(ic,icode(nosys))
147 IF(iskew(nosys) == -1.OR.iskew(nosys) == is)THEN
148 check_new=is
149 ELSE
150 CALL ancmsg(msgid=148,anmode=aninfo,msgtype=msgerror,i1=itab(nosys),prmod=msg_cumu)
151 ENDIF
152 iskew(nosys)=check_new
153 ENDDO
154 CALL ancmsg(msgid=148,anmode=aninfo,msgtype=msgerror,i1=id,c1=titr,prmod=msg_print)
155 ELSE
156 CALL ancmsg(msgid=678,anmode=aninfo,msgtype=msgerror,i1=id,i2=igr,c1=titr)
157 ENDIF
158 ENDDO
159C-----------------------------------------------
160 RETURN
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_get_string(name, sval, size, is_available)
subroutine hm_option_start(entity_type)
initmumps id
integer, parameter nchartitle
integer, parameter ncharfield
integer nsubmod
integer function ngr2usr(iu, igr, ngr)
Definition nintrr.F:323
int my_or(int *a, int *b)
Definition precision.c:63
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)
Definition message.F:895