OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
kmatinv.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23C Computes AINV(NEL,3,3) which is the inverse of MAT(NEL,3,3)
24!||====================================================================
25!|| kmatinv3 ../engine/source/materials/tools/kmatinv.F
26!||--- called by ------------------------------------------------------
27!|| calcmatb ../engine/source/materials/mat/mat100/calcmatb.F
28!|| sigeps100 ../engine/source/materials/mat/mat100/sigeps100.F90
29!|| sigeps95 ../engine/source/materials/mat/mat095/sigeps95.F
30!||====================================================================
31 SUBROUTINE kmatinv3(MAT, AINV ,NEL)
32C-----------------------------------------------
33C I m p l i c i t T y p e s
34C-----------------------------------------------
35#include "implicit_f.inc"
36C-----------------------------------------------
37
38 INTEGER I,NEL,N
39C-----------------------------------------------
40
41 my_real fac,deta, mat(nel,3,3),ainv(nel,3,3)
42C-----------------------------------------------
43C
44 DO i= 1,nel
45 deta=mat(i,1,1)*mat(i,2,2)*mat(i,3,3) -mat(i,1,1)*mat(i,2,3)*mat(i,3,2) -
46 . mat(i,3,3)*mat(i,1,2)*mat(i,2,1) +mat(i,1,2)*mat(i,2,3)*mat(i,3,1) +
47 . mat(i,2,1)*mat(i,3,2)*mat(i,1,3) -mat(i,2,2)*mat(i,3,1)*mat(i,1,3)
48 IF(deta == zero)deta = em20
49 fac=one/ deta
50 !transpose(comatrice)/det
51 ainv(i,1,1)=fac*(mat(i,2,2)*mat(i,3,3)-mat(i,2,3)*mat(i,3,2))
52 ainv(i,2,2)=fac*(mat(i,1,1)*mat(i,3,3)-mat(i,3,1)*mat(i,1,3))
53 ainv(i,3,3)=fac*(mat(i,1,1)*mat(i,2,2)-mat(i,1,2)*mat(i,2,1))
54 ainv(i,1,2)=fac*(mat(i,3,2)*mat(i,1,3)-mat(i,3,3)*mat(i,1,2))
55 ainv(i,2,3)=fac*(mat(i,2,1)*mat(i,1,3)-mat(i,1,1)*mat(i,2,3))
56 ainv(i,3,1)=fac*(mat(i,2,1)*mat(i,3,2)-mat(i,2,2)*mat(i,3,1))
57 ainv(i,2,1)=fac*(mat(i,2,3)*mat(i,3,1)-mat(i,3,3)*mat(i,2,1))
58 ainv(i,3,2)=fac*(mat(i,1,2)*mat(i,3,1)-mat(i,1,1)*mat(i,3,2))
59 ainv(i,1,3)=fac*(mat(i,1,2)*mat(i,2,3)-mat(i,2,2)*mat(i,1,3))
60
61 ENDDO
62C
63 RETURN
64 END
#define my_real
Definition cppsort.cpp:32
subroutine kmatinv3(mat, ainv, nel)
Definition kmatinv.F:32