kisahalo
Bioengineer
- May 9, 2012
- 1
Hi,
I'm trying to do two things:
1) relay contact pressure data from URDFIL subroutine to DISP
2) allow fluid flow in non-contact areas
My first problem is that for some reason I can pass the void ratio (see attached file) to other subroutines, but when I do the exact same thing to contact pressure, when I call it the array is filled with zeros only. I've defined the parameters in a common file (see the end of this post). I also noticed that there's some problem with the node number nr, because in the case of CSTRESS it seems to give the increment number instead. This is especially strange because it works just fine with the aforementioned void ratio.
My second problem concerns the DISP subroutine. How do make it so that the fluid flow out of the parts is allowed only in non-contact areas? Do I do it in the following way:
*Boundary, user
contactnodes, 8, 8
And then in DISP (see attachment file) use a threshold value to define nodes that are in contact and those that are not, and apply U(1)=0 to the latter ones.
Here is my common file:
------------------------------------
integer nel,nnodes,fnel,nip,tnodes
parameter(nel=100,nnodes=686,nip=8,fnel=100,tnodes=133)
real*8 Em,vm,Gm,Km,E0,Efe,n0,Cst,hz,rvec,dvec,k0,Mk,
* pi,JJ,sqrt2,sqrt3,thresholdvalue
common/matpar/Em,vm,Gm,Km,E0,Efe,n0,Cst,hz,rvec,dvec,pi,JJ,
* k0,Mk,sqrt2,sqrt3,thresholdvalue
real*8 I2s,I4s,dJdF,invF,SIGMA,SIGMAm,SIGMAtot,dSIGMA,dSIGMAm,
* dSIGMAtot,dens,epsi,epsold,sigmai,sigmaold,nfelem,fluid,
* vec,zhE,voidr0,voidrnew,xvect,yvect,zvect,sepsi,theta,
* ttheta,contactpressure,surfnodes
common/matrix/I2s(3,3),I4s(3,3,3,3),dJdF(3,3),invF(3,3),
* SIGMA(17,3,3),
* SIGMAm(3,3),SIGMAtot(3,3),dSIGMA(17,3,3,3,3),
* dSIGMAm(3,3,3,3), dSIGMAtot(3,3,3,3),dens(nel,nip),
* epsi(nel,nip,17),epsold(nel,nip,17),sigmai(nel,nip,17),
* sigmaold(nel,nip,17),vec(nel,nip,17,2,4),zhE(nel,nip),
* voidr0(nnodes),voidrnew(nnodes),xvect(nel,nip),
* yvect(nel,nip),zvect(nel,nip),sepsi(nel,nip,17),
* nfelem(nel),fluid(nnodes),theta(nel,nip),ttheta(nel,nip),
* contactpressure(nnodes),surfnodes(tnodes)
integer KINCold,KSTEPold,totf,felem
common/counters/KINCold,KSTEPold,totf,felem(2)
I'm trying to do two things:
1) relay contact pressure data from URDFIL subroutine to DISP
2) allow fluid flow in non-contact areas
My first problem is that for some reason I can pass the void ratio (see attached file) to other subroutines, but when I do the exact same thing to contact pressure, when I call it the array is filled with zeros only. I've defined the parameters in a common file (see the end of this post). I also noticed that there's some problem with the node number nr, because in the case of CSTRESS it seems to give the increment number instead. This is especially strange because it works just fine with the aforementioned void ratio.
My second problem concerns the DISP subroutine. How do make it so that the fluid flow out of the parts is allowed only in non-contact areas? Do I do it in the following way:
*Boundary, user
contactnodes, 8, 8
And then in DISP (see attachment file) use a threshold value to define nodes that are in contact and those that are not, and apply U(1)=0 to the latter ones.
Here is my common file:
------------------------------------
integer nel,nnodes,fnel,nip,tnodes
parameter(nel=100,nnodes=686,nip=8,fnel=100,tnodes=133)
real*8 Em,vm,Gm,Km,E0,Efe,n0,Cst,hz,rvec,dvec,k0,Mk,
* pi,JJ,sqrt2,sqrt3,thresholdvalue
common/matpar/Em,vm,Gm,Km,E0,Efe,n0,Cst,hz,rvec,dvec,pi,JJ,
* k0,Mk,sqrt2,sqrt3,thresholdvalue
real*8 I2s,I4s,dJdF,invF,SIGMA,SIGMAm,SIGMAtot,dSIGMA,dSIGMAm,
* dSIGMAtot,dens,epsi,epsold,sigmai,sigmaold,nfelem,fluid,
* vec,zhE,voidr0,voidrnew,xvect,yvect,zvect,sepsi,theta,
* ttheta,contactpressure,surfnodes
common/matrix/I2s(3,3),I4s(3,3,3,3),dJdF(3,3),invF(3,3),
* SIGMA(17,3,3),
* SIGMAm(3,3),SIGMAtot(3,3),dSIGMA(17,3,3,3,3),
* dSIGMAm(3,3,3,3), dSIGMAtot(3,3,3,3),dens(nel,nip),
* epsi(nel,nip,17),epsold(nel,nip,17),sigmai(nel,nip,17),
* sigmaold(nel,nip,17),vec(nel,nip,17,2,4),zhE(nel,nip),
* voidr0(nnodes),voidrnew(nnodes),xvect(nel,nip),
* yvect(nel,nip),zvect(nel,nip),sepsi(nel,nip,17),
* nfelem(nel),fluid(nnodes),theta(nel,nip),ttheta(nel,nip),
* contactpressure(nnodes),surfnodes(tnodes)
integer KINCold,KSTEPold,totf,felem
common/counters/KINCold,KSTEPold,totf,felem(2)