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

Go to the source code of this file.

Functions/Subroutines

subroutine alewdx_grid_bcs (skew, iskew, icodt, vec, nale, node_id)

Function/Subroutine Documentation

◆ alewdx_grid_bcs()

subroutine alewdx_grid_bcs ( dimension(lskew,*), intent(inout) skew,
integer, dimension(*), intent(inout) iskew,
integer, dimension(*), intent(inout) icodt,
dimension(3), intent(inout) vec,
integer, dimension(numnod), intent(inout) nale,
integer, intent(in) node_id )

Definition at line 28 of file alewdx_grid_bcs.F.

29C-----------------------------------------------
30C D e s c r i p t i o n
31C-----------------------------------------------
32C This subroutine is imposing BCS for grid points.
33C done at each iteration since skew may evolve during a smoothing iteration
34C-----------------------------------------------
35C I m p l i c i t T y p e s
36C-----------------------------------------------
37#include "implicit_f.inc"
38C-----------------------------------------------
39C C o m m o n B l o c k s
40C-----------------------------------------------
41#include "com04_c.inc"
42#include "param_c.inc"
43C-----------------------------------------------
44C D u m m y A r g u m e n t s
45C-----------------------------------------------
46 INTEGER,INTENT(IN) :: NODE_ID
47 INTEGER,INTENT(INOUT) :: ISKEW(*),ICODT(*),NALE(NUMNOD)
48 my_real,INTENT(INOUT) :: skew(lskew,*),vec(3)
49C-----------------------------------------------
50C L o c a l V a r i a b l e s
51C-----------------------------------------------
52 INTEGER N, ISK, LCOD1,LCOD2, NINDX
53 my_real aa
54 LOGICAL TAG(3)
55C-----------------------------------------------
56C S o u r c e L i n e s
57C-----------------------------------------------
58 lcod1 = 0
59 lcod2 = 0
60C----------------------------------------
61C BOUNDARY CONDITIONS (MESH)
62C----------------------------------------
63 !RETRIEVING CODE FOR BCS et ALE/BCS
64 ! 000 <=> LCOD=0
65 ! 001 <=> LCOD=1 (Z)
66 ! 010 <=> LCOD=2 (Y)
67 ! 011 <=> LCOD=3 (YZ)
68 ! 100 <=> LCOD=4 (X)
69 ! 101 <=> LCOD=5 (XZ)
70 ! 110 <=> LCOD=6 (XY)
71 ! 111 <=> LCOD=7 (XYZ)
72 tag(1:3)=.false.
73 nindx = 0
74 n = node_id
75 IF(nale(n) /= 0)THEN
76 isk=iskew(n)
77 lcod1=icodt(n+numnod) !BCS
78 IF(lcod1 /= 0) THEN
79 nindx = n
80 ENDIF
81 lcod2=icodt(n+numnod+numnod) !ale/bcs
82 IF(lcod2 /= 0) THEN
83 nindx = n
84 ENDIF
85 ENDIF
86
87 !TEST ENABLED BINARY (check for X,Y or Z in LCOD1 or LCOD2)
88 !
89 IF(btest(lcod1,0).OR.btest(lcod2,0))tag(3)=.true. ! **1 => condition on Z dir
90 IF(btest(lcod1,1).OR.btest(lcod2,1))tag(2)=.true. ! *1* => condition on Y dir
91 IF(btest(lcod1,2).OR.btest(lcod2,2))tag(1)=.true. ! 1** => condition on X dir
92
93 !UPDATE VECTOR DEPENDING ON BOUNDARY CONDITION AT RELATED NODE
94 !
95 IF (nindx /= 0 )THEN
96 isk = iskew(n)
97 IF(isk == 1) THEN
98 !=====REPERE GLOBAL
99 IF(tag(1))vec(1)=zero
100 IF(tag(2))vec(2)=zero
101 IF(tag(3))vec(3)=zero
102 ELSE
103 !=====REPERE OBLIQUE
104 IF(tag(1))THEN
105 aa =skew(1,isk)*vec(1)+skew(2,isk)*vec(2)+skew(3,isk)*vec(3)
106 vec(1)=vec(1)-skew(1,isk)*aa
107 vec(2)=vec(2)-skew(2,isk)*aa
108 vec(3)=vec(3)-skew(3,isk)*aa
109 ENDIF
110 IF(tag(2))THEN
111 aa =skew(4,isk)*vec(1)+skew(5,isk)*vec(2)+skew(6,isk)*vec(3)
112 vec(1)=vec(1)-skew(4,isk)*aa
113 vec(2)=vec(2)-skew(5,isk)*aa
114 vec(3)=vec(3)-skew(6,isk)*aa
115 ENDIF
116 IF(tag(3))THEN
117 aa =skew(7,isk)*vec(1)+skew(8,isk)*vec(2)+skew(9,isk)*vec(3)
118 vec(1)=vec(1)-skew(7,isk)*aa
119 vec(2)=vec(2)-skew(8,isk)*aa
120 vec(3)=vec(3)-skew(9,isk)*aa
121 ENDIF
122 ENDIF
123 ENDIF
124
125 RETURN
#define my_real
Definition cppsort.cpp:32