SKSA
Civil/Environmental
- Feb 28, 2024
- 33
HI,
I am willing to write a VUSDFLD subroutine where the Angle of internal friction (Phi) and Dilation angle will be vary with strain. I am attaching the photo for better understanding. Now can you please check whether my subroutine is okay or not? I will be very grateful to you.
Here is my subroutine,
c Get volume fraction from previous increment
jStatus = 1
call vgetvrm('EVF',rdata,jData,cData,jStatus)
c Storing EVF data
do k = 1, nblock ,1
stateNew(k,3) = rdata(k)
c write(*,*) stateNew(k,1)
end do
call vgetvrm('PEEQ',rdata,jData,cData,jStatus)
do k = 1, nblock ,1
stateOld(k,1) = rdata(k)
stateOld(k,2)= rdata(k)
c write(*,*) stateNew(k,1)
end do
c
DO k = 1, nblock
C CENTER OF COORDINATE SYSTEM
PHIM=30.0
PHIC=25.0
XGAMAF=20.0
XAIM=0.0
XAIR=0.0
C CALCULATE ANGLE OF INTERNAL FRICTION AND DILATION ANGLE
stateNew(k,1) = stateOld(k,1)
stateNew(K,2) = stateOld(k,2)
PHI=stateOld(K,1)
XAI=stateOld(K,2)
IF (stateOld(K,1) .GE. 0.0D0 .AND. stateOld(K,1) .LE. XGAMAF) THEN
PHIMOB=PHIM-((PHIM-PHIC)/XGAMAF)*stateNew(K,1)
XAIMOB=XAIM*(1.0D0-(stateNew(K,1)/XGAMAF))
ELSE
PHIMOB=PHIC
XAIMOB=XAIR
END IF
C
FIELD(K,1)=PHIMOB
FIELD(K,2)=XAIMOB
C SAVE THE NEW STATE VARIABLES
stateNew(K,1)=FIELD(K,1)
STATENEW(K,2)=FIELD(K,2)
ENDDO
I am willing to write a VUSDFLD subroutine where the Angle of internal friction (Phi) and Dilation angle will be vary with strain. I am attaching the photo for better understanding. Now can you please check whether my subroutine is okay or not? I will be very grateful to you.
Here is my subroutine,
c Get volume fraction from previous increment
jStatus = 1
call vgetvrm('EVF',rdata,jData,cData,jStatus)
c Storing EVF data
do k = 1, nblock ,1
stateNew(k,3) = rdata(k)
c write(*,*) stateNew(k,1)
end do
call vgetvrm('PEEQ',rdata,jData,cData,jStatus)
do k = 1, nblock ,1
stateOld(k,1) = rdata(k)
stateOld(k,2)= rdata(k)
c write(*,*) stateNew(k,1)
end do
c
DO k = 1, nblock
C CENTER OF COORDINATE SYSTEM
PHIM=30.0
PHIC=25.0
XGAMAF=20.0
XAIM=0.0
XAIR=0.0
C CALCULATE ANGLE OF INTERNAL FRICTION AND DILATION ANGLE
stateNew(k,1) = stateOld(k,1)
stateNew(K,2) = stateOld(k,2)
PHI=stateOld(K,1)
XAI=stateOld(K,2)
IF (stateOld(K,1) .GE. 0.0D0 .AND. stateOld(K,1) .LE. XGAMAF) THEN
PHIMOB=PHIM-((PHIM-PHIC)/XGAMAF)*stateNew(K,1)
XAIMOB=XAIM*(1.0D0-(stateNew(K,1)/XGAMAF))
ELSE
PHIMOB=PHIC
XAIMOB=XAIR
END IF
C
FIELD(K,1)=PHIMOB
FIELD(K,2)=XAIMOB
C SAVE THE NEW STATE VARIABLES
stateNew(K,1)=FIELD(K,1)
STATENEW(K,2)=FIELD(K,2)
ENDDO