gunardilin
Industrial
- Jan 5, 2017
- 7
Hey Everyone,
I am running an Abaqus simulation with a subroutine and it terminated itself because of "floating point error". I tried after that running the simulation without the subroutine by giving it a material property, that doesn't require any subroutine. (In my case, the subroutine is for viscosity definition that is dependent on temperature and shear stress). With material property that independent to temperature and shear stress (no subroutine required), the simulation runs smoothly. That's why I think the problem has to be in my subroutine. That's why I would like to run a debugger to my subroutine by following the manual from .
Following are my questions:
1. What could be gone wrong in subroutine that leads to "floating point error"? Excuse me, if the answer is obvious, because I have no or less experience with fortran. Following is the subroutine:
subroutine vuviscosity (
C Read only -
* nblock,
* jElem, kIntPt, kLayer, kSecPt,
* stepTime, totalTime, dt, cmname,
* nstatev, nfieldv, nprops,
* props, tempOld, tempNew, fieldOld, fieldNew,
* stateOld,
* shrRate,
C Write only -
* viscosity,
* stateNew )
C
include 'vaba_param.inc'
C
dimension props(nprops),
* tempOld(nblock),
* fieldOld(nblock,nfieldv),
* stateOld(nblock,nstatev),
* shrRate(nblock),
* tempNew(nblock),
* fieldNew(nblock,nfieldv),
* viscosity(nblock),
* stateNew(nblock,nstatev)
C
character*80 cmname
C
parameter ( one = 1.d0)
REAL, DIMENSION(nblock) :: n0, T
C
C VARIABLES
n = 0.2647
Tau = 309343
D1 = 1.68413e+13
D2 = 323.15
A1 = 31.206
A2 = 51.6
C
C Cross-WLF viscosity model
C
do k = 1, nblock
T(k) = tempOld(k) + 273.15
n0(k) = D1 * exp (-(A1 * (T(k) - D2)) / (A2 + T(k) - D2))
viscosity(k) = n0(k) / (one + ((n0(k) * shrRate(k)) / Tau)**(one-n))
end do
C
return
end
2. How could I link the subroutine with a debugger? I don't understand the 2nd step of the manual (login to stokes or stoney on two seperate termials). It would be ideal for debugging purpose, if I could read the values stored in variables for the subroutine.
I really appreciate for any input or advice from Everyone
Many regards,
Gunardi
I am running an Abaqus simulation with a subroutine and it terminated itself because of "floating point error". I tried after that running the simulation without the subroutine by giving it a material property, that doesn't require any subroutine. (In my case, the subroutine is for viscosity definition that is dependent on temperature and shear stress). With material property that independent to temperature and shear stress (no subroutine required), the simulation runs smoothly. That's why I think the problem has to be in my subroutine. That's why I would like to run a debugger to my subroutine by following the manual from .
Following are my questions:
1. What could be gone wrong in subroutine that leads to "floating point error"? Excuse me, if the answer is obvious, because I have no or less experience with fortran. Following is the subroutine:
subroutine vuviscosity (
C Read only -
* nblock,
* jElem, kIntPt, kLayer, kSecPt,
* stepTime, totalTime, dt, cmname,
* nstatev, nfieldv, nprops,
* props, tempOld, tempNew, fieldOld, fieldNew,
* stateOld,
* shrRate,
C Write only -
* viscosity,
* stateNew )
C
include 'vaba_param.inc'
C
dimension props(nprops),
* tempOld(nblock),
* fieldOld(nblock,nfieldv),
* stateOld(nblock,nstatev),
* shrRate(nblock),
* tempNew(nblock),
* fieldNew(nblock,nfieldv),
* viscosity(nblock),
* stateNew(nblock,nstatev)
C
character*80 cmname
C
parameter ( one = 1.d0)
REAL, DIMENSION(nblock) :: n0, T
C
C VARIABLES
n = 0.2647
Tau = 309343
D1 = 1.68413e+13
D2 = 323.15
A1 = 31.206
A2 = 51.6
C
C Cross-WLF viscosity model
C
do k = 1, nblock
T(k) = tempOld(k) + 273.15
n0(k) = D1 * exp (-(A1 * (T(k) - D2)) / (A2 + T(k) - D2))
viscosity(k) = n0(k) / (one + ((n0(k) * shrRate(k)) / Tau)**(one-n))
end do
C
return
end
2. How could I link the subroutine with a debugger? I don't understand the 2nd step of the manual (login to stokes or stoney on two seperate termials). It would be ideal for debugging purpose, if I could read the values stored in variables for the subroutine.
I really appreciate for any input or advice from Everyone
Many regards,
Gunardi