CalculiX  2.13
A Free Software Three-Dimensional Structural Finite Element Program
mafillp.f File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine mafillp (nef, lakonf, ipnei, neifa, neiel, vfa, area, advfa, xlet, cosa, volume, au, ad, jq, irow, ap, ielfa, ifabou, xle, b, xxn, neq, nzs, hfa, gradpel, bp, xxi, neij, xlen, cosb, nefa, nefb, iau6, xxicn)
 

Function/Subroutine Documentation

◆ mafillp()

subroutine mafillp ( integer  nef,
character*8, dimension(*)  lakonf,
integer, dimension(*)  ipnei,
integer, dimension(*)  neifa,
integer, dimension(*)  neiel,
real*8, dimension(0:7,*)  vfa,
real*8, dimension(*)  area,
real*8, dimension(*)  advfa,
real*8, dimension(*)  xlet,
real*8, dimension(*)  cosa,
real*8, dimension(*)  volume,
real*8, dimension(*)  au,
real*8, dimension(*)  ad,
integer, dimension(*)  jq,
integer, dimension(*)  irow,
real*8, dimension(*)  ap,
integer, dimension(4,*)  ielfa,
integer, dimension(*)  ifabou,
real*8, dimension(*)  xle,
real*8, dimension(*)  b,
real*8, dimension(3,*)  xxn,
integer  neq,
integer  nzs,
real*8, dimension(3,*)  hfa,
real*8, dimension(3,*)  gradpel,
real*8, dimension(*)  bp,
real*8, dimension(3,*)  xxi,
integer, dimension(*)  neij,
real*8, dimension(*)  xlen,
real*8, dimension(*)  cosb,
integer  nefa,
integer  nefb,
integer, dimension(6,*)  iau6,
real*8, dimension(3,*)  xxicn 
)
23 !
24 ! filling the lhs and rhs to calculate p
25 !
26  implicit none
27 !
28  character*8 lakonf(*)
29 !
30  integer i,nef,indexf,ipnei(*),j,neifa(*),nefa,nefb,
31  & neiel(*),iel,ifa,irow(*),ielfa(4,*),compressible,
32  & ifabou(*),neq,jq(*),iel2,indexb,knownflux,indexf2,
33  & j2,neij(*),nzs,k,iau6(6,*)
34 !
35  real*8 coef,vfa(0:7,*),volume(*),area(*),advfa(*),xlet(*),
36  & cosa(*),ad(*),au(*),xle(*),xxn(3,*),ap(*),b(*),cosb(*),
37  & hfa(3,*),gradpel(3,*),bp(*),xxi(3,*),xlen(*),bp_ifa,
38  & xxicn(3,*)
39 !
40  do i=nefa,nefb
41  indexf=ipnei(i)
42  do j=1,ipnei(i+1)-indexf
43 !
44  knownflux=0
45 !
46 ! diffusion
47 !
48  indexf=indexf+1
49  ifa=neifa(indexf)
50  iel=neiel(indexf)
51  if(iel.ne.0) then
52  coef=vfa(5,ifa)*(volume(i)+volume(iel))*area(ifa)/
53  & (advfa(ifa)*2.d0*xlet(indexf)*cosb(indexf))
54  ad(i)=ad(i)-coef
55  if(i.gt.iel) au(iau6(j,i))=au(iau6(j,i))+coef
56 !
57 ! correction for non-orthogonal meshes
58 !
59  j2=neij(indexf)
60  indexf2=ipnei(iel)+j2
61  bp_ifa=((gradpel(1,iel)*xxicn(1,indexf2)+
62  & gradpel(2,iel)*xxicn(2,indexf2)+
63  & gradpel(3,iel)*xxicn(3,indexf2))
64  & *xle(indexf2)
65  & -(gradpel(1,i)*xxicn(1,indexf)+
66  & gradpel(2,i)*xxicn(2,indexf)+
67  & gradpel(3,i)*xxicn(3,indexf))
68  & *xle(indexf))
69  b(i)=b(i)-coef*bp_ifa
70  else
71  iel2=ielfa(2,ifa)
72  if(iel2.lt.0) then
73  if((ifabou(-iel2+1).ne.0).and.
74  & (ifabou(-iel2+2).ne.0).and.
75  & (ifabou(-iel2+3).ne.0)) then
76 !
77 ! all velocity components given: inlet or wall
78 !
79  knownflux=1
80  elseif(ifabou(-iel2+5).lt.0) then
81 !
82 ! sliding conditions
83 !
84  knownflux=2
85  elseif(ifabou(-iel2+4).ne.0) then
86 !
87 ! pressure given (only if not all velocity
88 ! components are given)
89 !
90  coef=vfa(5,ifa)*volume(i)*area(ifa)/
91  & (advfa(ifa)*xle(indexf)*cosa(indexf))
92  ad(i)=ad(i)-coef
93  b(i)=b(i)-coef*vfa(4,ifa)
94 !
95 ! correction for non-orthogonal meshes
96 !
97  bp_ifa=(-(gradpel(1,i)*xxicn(1,indexf)+
98  & gradpel(2,i)*xxicn(2,indexf)+
99  & gradpel(3,i)*xxicn(3,indexf))
100  & *xle(indexf))
101  b(i)=b(i)-coef*bp_ifa
102  endif
103  endif
104  endif
105 !
106 ! save coefficients for correctvfa.f
107 !
108  if((iel.eq.0).or.(i.lt.iel)) then
109  ap(ifa)=coef
110  bp(ifa)=bp_ifa
111  endif
112 !
113 ! save the coefficient for correctvfa.f
114 !
115  if(knownflux.eq.1) then
116  b(i)=b(i)+vfa(5,ifa)*area(ifa)*
117  & (vfa(1,ifa)*xxn(1,indexf)+
118  & vfa(2,ifa)*xxn(2,indexf)+
119  & vfa(3,ifa)*xxn(3,indexf))
120  elseif(knownflux.ne.2) then
121  b(i)=b(i)+vfa(5,ifa)*area(ifa)*
122  & (hfa(1,ifa)*xxn(1,indexf)+
123  & hfa(2,ifa)*xxn(2,indexf)+
124  & hfa(3,ifa)*xxn(3,indexf))
125  endif
126  enddo
127  enddo
128 !
129  return
Hosted by OpenAircraft.com, (Michigan UAV, LLC)