You are here
Positive definite stress-strain matrix
Dear friends,
I'm an MSc. student at Bogazici University, Turkiye and I'm working on a thesis project about the failure behaviour of fiber reinforced laminated composite plates under different loading types. The material which we use are AS4 fiber reinforced prepregs and their mechanical properties are the following:
E11 =134,000 MPa E22 = E33= 9480 MPa G12 = G13= 5490 MPa G23 MPa =3272 nu12 = nu13 =0.271
nu23 =0.448
We are almost sure about the validity of the values of mechanical properties due to the fact that experimental, numerical and empirical approaches give similar results.
I am using Ansys Mechanical APDL and plate is modeled by solid elements (solid 46, solid 186), etc. When I enter commands to Ansys by using batch file it gives the error given below:
The stress-strain matrix of material 1 is not positive definite, which is required for real materials. Being positive defiite means that 1.0-NUXY**2*EX/EY-NUYZ**2*EY/EZ-NUXZ**2*EX/EZ-2.0*NUXY*NUYZ*NUXZ*EX/EZ must be positive, but is equal to -2.20701288. Consider reducing the Poisson's ratios.
I asked to a friend to solve the same problem with Abaqus and there was no error.
Is there anyone who can tell me how to deal with this problem?
- muhendismrt's blog
- Log in or register to post comments
- 13761 reads
Comments
Re: Positive definite stress-strain matrix
You may be not be entering values that Ansys expects.
Try entering the values of nu31 and nu21 instead of nu12 and nu13.
nu31 = 0.019172
nu21 = 0.019172
Also, a positive definite matrix will probably have all its eigenvalues > 0. But a better check is the Cholesky decomposition. According to Matlab,
" [R,p] = CHOL(A), with two output arguments, never produces an error message. If A is positive definite, then p is 0 and R is the same as above. But if A is not positive definite, then p is a positive integer.
When A is full, R is an upper triangular matrix of order q = p-1 so that R'*R = A(1:q,1:q).
When A is sparse, R is an upper triangular matrix of size q-by-n so that the L-shaped region of the first q rows and first q columns of R'*R agree with those of A."
See Matlab/Octave script below.
-- Biswajit
E33 = 9480e6
E22 = 9480e6
E11 = 134e9
G32 = 3272e6
G21 = 5490e6
G13 = 5490e6
nu32 = 0.448
nu12 = 0.271
nu13 = 0.271
G32 = E33/(2*(1+nu32))
nu32 = E33/(2*G32)-1
nu23 = nu32*E22/E33
nu31 = nu13*E33/E11
%nu32 = nu31
nu21 = nu12*E22/E11
mat = [[1/E11 -nu12/E11 -nu13/E11 0 0 0]; ...
[-nu21/E22 1/E22 -nu23/E22 0 0 0];...
[-nu31/E33 -nu32/E33 1/E33 0 0 0];...
[0 0 0 1/G32 0 0]; ...
[0 0 0 0 1/G13 0 ];...
[0 0 0 0 0 1/G21]]
matinv = inv(mat)
eigs = eig(matinv)
[R, p] = chol(matinv)
% Check to see that p = 0.