4 &(w_dist,t11,t12,t13,t14,t15,flbor,tb,am1,am2,s,
5 & liubor,ielmnu,nptfr,mesh)
35 INTEGER ,
INTENT(IN ) :: IELMNU,NPTFR
36 TYPE(bief_obj) ,
INTENT(IN ) :: LIUBOR
37 TYPE(bief_obj) ,
INTENT(INOUT) :: W_DIST
38 TYPE(bief_obj) ,
INTENT(INOUT) :: T11,T12,T13,T14,T15,FLBOR,TB
39 TYPE(bief_obj) ,
INTENT(INOUT) :: AM1,AM2,S
40 TYPE(bief_mesh),
INTENT(INOUT) :: MESH
44 LOGICAL :: SOLVER_INFO
45 INTEGER :: IPTFR,IP,IELWD,IERR,DEBUG
46 DOUBLE PRECISION :: GRAD_D
47 INTEGER,
ALLOCATABLE :: LIMDIST(:)
48 TYPE(slvcfg) :: SLVDIST
51 ALLOCATE(limdist(nptfr))
67 WRITE(
lu,*)
'TELEMAC2D: 31 ' 79 IF(liubor%I(iptfr).EQ.
klog.OR.liubor%I(iptfr).EQ.
kadh)
THEN 90 CALL matrix(am1,
'M=N ',
'MATMAS ',ielwd,ielwd,
91 & 1.d0,s,s,s,s,s,s,mesh,.false.,s)
95 CALL matrix(am2,
'M=N ',
'MATDIF ',ielwd,ielwd,
96 & 1.d0,s,s,s,t11,t11,t11,mesh,.false.,s)
99 CALL matvec(
'X=AY ',t13,am1,t12,1.d0,mesh)
105 CALL dirich(t14,am2,t13,flbor,limdist,
106 & tb,mesh,
kdir,.false.,s)
112 IF (debug.GT.0)
WRITE(
lu,*)
'SOLVING WALL DISTANCE' 113 CALL solve(t14,am2,t13,tb,slvdist,solver_info,mesh,am2)
116 CALL vector(t11,
'=',
'GRADF X',ielwd,
117 & 1.d0,t14,s,s,s,s,s,mesh,.false.,s,asspar=.true.)
118 CALL vector(t12,
'=',
'GRADF Y',ielwd,
119 & 1.d0,t14,s,s,s,s,s,mesh,.false.,s,asspar=.true.)
120 CALL vector(t15 ,
'=' ,
'MASBAS ' , ielwd ,
122 & mesh,.false.,s,asspar=.true.)
124 CALL os(
'X=Y/Z ', x=t11, y=t11, z=t15)
125 CALL os(
'X=Y/Z ', x=t12, y=t12, z=t15)
130 grad_d = t11%R(ip)**2.d0 + t12%R(ip)**2.d0
131 IF(grad_d + 2.d0*t14%R(ip).GT.0.d0.AND.grad_d.GT.0)
THEN 132 w_dist%R(ip) = -sqrt(grad_d) + sqrt(grad_d + 2.d0*t14%R(ip))
143 WRITE(
lu,*)
'WALLDIST (BIEF): WARNING WITH THE WALL DISTANCE ' 144 WRITE(
lu,*)
' COMPUTATION. NEGATIVE DETERMINANT ' 145 WRITE(
lu,*)
' ON ', ierr,
'NODES' 146 WRITE(
lu,*)
' (PROBABLY OVER CONSTRAINT NODES)'
subroutine solve(X, A, B, TB, CFG, INFOGR, MESH, AUX)
subroutine walldist(W_DIST, T11, T12, T13, T14, T15, FLBOR, TB, AM1, AM2, S, LIUBOR, IELMNU, NPTFR, MESH)
subroutine matrix(M, OP, FORMUL, IELM1, IELM2, XMUL, F, G, H, U, V, W, MESH, MSK, MASKEL)
subroutine dirich(F, S, SM, FBOR, LIMDIR, WORK, MESH, KDIR, MSK, MASKPT)
subroutine vector(VEC, OP, FORMUL, IELM1, XMUL, F, G, H, U, V, W, MESH, MSK, MASKEL, LEGO, ASSPAR)
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
subroutine matvec(OP, X, A, Y, C, MESH, LEGO)