Hallo,
es geht um folgendes:
Ich moechte PLOTV nutzen um das Young's modulus im Postfiel auszugeben.
Ich benutze ELEVAR um das YM zu berechnen und gebe es danach an HYPELA weiter.
YM soll sich bei jeder Inkrementierung aendern (Adaption von Knochen an Belastung).
Nun moechte ich anhand PLOTV checken, ob etwas passiert. Soll dann als via numerics im postfile zeigbar sein.
Jedoch weiss ich ned genau, wie ich das mit PLOTV anstelle, da V (die output variable) nicht direkt mein YM sein kann.
Ich poste mal meinen Quelltext:
C====June,24th, 2008 - Hauke Stricker============================================
C -------------------------------------------------------------------------------
C ELEVAR - evaluate E
C -------------------------------------------------------------------------------
SUBROUTINE ELEVAR(N,NN,KCUS,GSTRAN,GSTRES,STRESS,PSTRAN,
1 CSTRAN,VSTRAN,CAUCHY,EPLAS,EQUIVC,SWELL,KRTYP,PRANG,DT,
2 GSV,NGENS,NGEN1,NSTATS,NSTASS,THERM)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION GSTRAN(NGENS),GSTRES(NGENS),
1 STRESS(NGEN1),PSTRAN(NGEN1),CSTRAN(NGEN1),VSTRAN(NGEN1),
2 CAUCHY(NGEN1),DT(NSTATS),GSV(1),THERM(NGEN1),KRTYP(4),
3 PRANG(3,2),KCUS(2)
include '../common/concom'
include '../common/matdat'
DIMENSION Young(1000)
common/hauke/Young
call elmvar(48,m,NN,0,SED)
x1 = 200.d0
x2 = 3.d0
hk = 0.004d0
ddens = 0.5d0 * (SED/rho - hk)
Young(m) = x1 * ddens**x2
RETURN
END
C--------------------------------------------------------------------------------
C HYPELA
C--------------------------------------------------------------------------------
C
SUBROUTINE HYPELA2(D,G,E,DE,S,T,DT,NGENS,m,nn,KC,MATUS,NDI,
2 NSHEAR,DISP,DISPT,COORD,FFN,FROTN,STRECHN,EIGVN,FFN1,
3 FROTN1,STRECHN1,EIGVN1,NCRD,ITEL,NDEG,NDM,NNODE,
4 JTYPE,LCLASS,IFR,IFU)
IMPLICIT REAL *8 (A-H, O-Z)
DIMENSION E(1),DE(1),T(1),DT(1),G(1),D(NGENS,NGENS),S(1)
DIMENSION N(2),COprintORD(NCRD,NNODE),DISP(NDEG,NNODE),
2 DISPT(NDEG,NNODE),FFN(ITEL,ITEL),FROTN(ITEL,ITEL),
3 STRECHN(ITEL),EIGVN(ITEL,ITEL),FFN1(ITEL,ITEL),
4 FROTN1(ITEL,ITEL),STRECHN1(ITEL),EIGVN1(ITEL,ITEL)
DIMENSION Green(3,3),Cse(3,3,3,3),
1 secondPK(3,3)
DIMENSION MATUS(2)
C
include '../common/concom'
include '../common/matdat'
dimension Young(1000)
common/hauke/Young
if (inc.eq.0) then
Young(m)=10000.d0
! else
! Young(m)=Young(m)
end if
Poisson=0.3d0
C... Green strain
if (ncycle.eq.0) then
Green(1,1)=E(1)
Green(2,2)=E(2)
Green(3,3)=E(3)
Green(1,2)=0.5d0*E(4)
Green(1,3)=0.5d0*E(6)
Green(2,1)=0.5d0*E(4)
Green(2,3)=0.5d0*E(5)
Green(3,1)=0.5d0*E(6)
Green(3,2)=0.5d0*E(5)
else
Green(1,1)=E(1)+DE(1)
Green(2,2)=E(2)+DE(2)
Green(3,3)=E(3)+DE(3)
Green(1,2)=0.5d0*(E(4)+DE(4))
Green(1,3)=0.5d0*(E(6)+DE(6))
Green(2,1)=0.5d0*(E(4)+DE(4))
Green(2,3)=0.5d0*(E(5)+DE(5))
Green(3,1)=0.5d0*(E(6)+DE(6))
Green(3,2)=0.5d0*(E(5)+DE(5))
end if
C ... Young modulus and Poisson ratio
dlambda=Poisson*Young(m)/((1.d0+Poisson)*(1.d0-2.d0*Poisson))
dmu=Young(m)/(2.d0*(1.d0+Poisson))
C..... Elasticity matrix (linear elastic )
do i=1,3
do j=1,3
do k=1,3
do l=1,3
Cse(i,j,k,l)=(dlambda*delta(i,j)*delta(k,l)+
* dmu*(delta(i,k)*delta(j,l)+delta(i,l)*delta(j,k)))
end do
end do
end do
end do
C ... elasticity matrix in voigt notation
D(1,1)=Cse(1,1,1,1)
D(1,2)=Cse(1,1,2,2)
D(1,3)=Cse(1,1,3,3)
D(1,4)=Cse(1,1,1,2)
D(1,5)=Cse(1,1,2,3)
D(1,6)=Cse(1,1,3,1)
c
D(2,2)=Cse(2,2,2,2)
D(2,3)=Cse(2,2,3,3)
D(2,4)=Cse(2,2,1,2)
D(2,5)=Cse(2,2,2,3)
D(2,6)=Cse(2,2,3,1)
c
D(3,3)=Cse(3,3,3,3)
D(3,4)=Cse(3,3,1,2)
D(3,5)=Cse(3,3,2,3)
D(3,6)=Cse(3,3,3,1)
c
D(4,4)=Cse(1,2,1,2)
D(4,5)=Cse(1,2,2,3)
D(4,6)=Cse(1,2,3,1)
c
D(5,5)=Cse(2,3,2,3)
D(5,6)=Cse(2,3,3,1)
c
D(6,6)=Cse(3,1,3,1)
do i=1,5
do j=i+1,6
D(j,i)=D(i,j)
end do
end do
do i=1,6
G(i)=0.d0
end do
C.. Second Piola-Kirchhoff stress
do i=1,3
do j=1,3
secondPK(i,j)=0.d0
do k=1,3
do l=1,3
secondPK(i,j)=secondPK(i,j)+Cse(i,j,k,l)*Green(k,l)
end do
end do
end do
end do
S(1)=secondPK(1,1)
S(2)=secondPK(2,2)
S(3)=secondPK(3,3)
S(4)=secondPK(1,2)
S(5)=secondPK(2,3)
S(6)=secondPK(1,3)
RETURN
END
C -------------------------------------------------------------------------------
C DELTA (Cronecker function)
C -------------------------------------------------------------------------------
real function delta(i,j)
implicit real*8 (a-h,o-z)
integer i,j
if (i.eq.j) then
delta=1.d0
else
delta=0.d0
end if
return
end
C -------------------------------------------------------------------------------
C PLOTV - (feedback), get value of E and stimulus
C -------------------------------------------------------------------------------
SUBROUTINE PLOTV(V,S,SP,ETOT,EPLAS,ECREEP,T,M,NN,KCUS,NDI,
1 NSHEAR,JPLTCD)
IMPLICIT REAL*8 (A-H, O-Z)
DIMENSION S(*),SP(*),ETOT(*),EPLAS(*),ECREEP(*),T(*),
1 M(2),KCUS(2)
include '../common/concom'
include '../common/matdat'
Dimension Young(1000)
common/hauke/Young
V = Young (Kann ich Young(m) von ELEVAR nicht irgendwie uebernehmen)
RETURN
END
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP