OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_mat25.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/.
23!||====================================================================
24!|| hm_read_mat25 ../starter/source/materials/mat/mat025/hm_read_mat25.F
25!||--- called by ------------------------------------------------------
26!|| hm_read_mat ../starter/source/materials/mat/hm_read_mat.F90
27!||--- calls -----------------------------------------------------
28!|| hm_get_intv ../starter/source/devtools/hm_reader/hm_get_intv.F
29!|| init_mat_keyword ../starter/source/materials/mat/init_mat_keyword.F
30!|| read_mat25_crasurv ../starter/source/materials/mat/mat025/read_mat25_crasurv.F90
31!|| read_mat25_tsaiwu ../starter/source/materials/mat/mat025/read_mat25_tsaiwu.F90
32!||--- uses -----------------------------------------------------
33!|| elbuftag_mod ../starter/share/modules1/elbuftag_mod.F
34!|| message_mod ../starter/share/message_module/message_mod.F
35!|| read_mat25_crasurv_mod ../starter/source/materials/mat/mat025/read_mat25_crasurv.F90
36!|| read_mat25_tsaiwu_mod ../starter/source/materials/mat/mat025/read_mat25_tsaiwu.F90
37!|| submodel_mod ../starter/share/modules1/submodel_mod.F
38!||====================================================================
39 SUBROUTINE hm_read_mat25(
40 . UPARAM ,MAXUPARAM,NUPARAM ,UNITAB ,LSUBMODEL,
41 . MTAG ,ID ,TITR ,PM ,ISRATE ,
42 . PARMAT ,MATPARAM )
43C-----------------------------------------------
44C M o d u l e s
45C-----------------------------------------------
46 USE unitab_mod
47 USE elbuftag_mod
48 USE message_mod
49 USE submodel_mod
50 USE matparam_def_mod
51 USE read_mat25_crasurv_mod
52 USE read_mat25_tsaiwu_mod
54C-----------------------------------------------
55C ROUTINE DESCRIPTION :
56C ===================
57C READ MAT LAW25 WITH HM READER
58C-----------------------------------------------
59C DUMMY ARGUMENTS DESCRIPTION:
60C ===================
61C UNITAB UNITS ARRAY
62C MAT_ID MATERIAL MAT_ID(INTEGER)
63C TITR MATERIAL TITLE
64C LSUBMODEL SUBMODEL STRUCTURE
65C-----------------------------------------------
66C I m p l i c i t T y p e s
67C-----------------------------------------------
68#include "implicit_f.inc"
69C-----------------------------------------------
70C C o m m o n B l o c k s
71C-----------------------------------------------
72#include "units_c.inc"
73#include "param_c.inc"
74C-----------------------------------------------
75C D u m m y A r g u m e n t s
76C-----------------------------------------------
77 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
78 INTEGER, INTENT(IN) :: ID
79 TYPE(SUBMODEL_DATA), DIMENSION(*),INTENT(IN) :: LSUBMODEL
80 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
81c
82 INTEGER, INTENT(INOUT) :: ISRATE
83 my_real, DIMENSION(100) ,INTENT(INOUT) :: parmat
84 my_real, DIMENSION(NPROPM) ,INTENT(INOUT) :: pm
85 TYPE(mlaw_tag_) ,INTENT(INOUT) :: MTAG
86 TYPE(matparam_struct_) ,INTENT(INOUT) :: MATPARAM
87c
88 INTEGER :: MAXUPARAM,NUPARAM
89 my_real, DIMENSION(MAXUPARAM) :: uparam
90C-----------------------------------------------
91C L o c a l V a r i a b l e s
92C-----------------------------------------------
93 INTEGER :: ILAW,IFLAG
94 LOGICAL :: IS_AVAILABLE
95C=======================================================================
96 is_available = .false.
97 ilaw = 25
98c--------------------------------------------------------
99c Formulation type
100c--------------------------------------------------------
101c
102 CALL hm_get_intv ('MAT_Iflag' ,iflag ,is_available,lsubmodel)
103
104 IF (iflag == 0) then ! Tsai-Wu formulation
105 CALL read_mat25_tsaiwu(
106 . matparam ,parmat ,unitab ,lsubmodel,
107 . id ,titr ,pm ,israte ,
108 . iout ,npropm )
109 matparam%NMOD = 3
110 ELSE
111 CALL read_mat25_crasurv(
112 . matparam ,parmat ,unitab ,lsubmodel,
113 . id ,titr ,pm ,israte ,
114 . iout ,npropm )
115 matparam%NMOD = 6
116 END IF
117c-------------------------------------------------------------
118c---- Element buffer variable activation (for automatic allocation)
119c-------------------------------------------------------------
120c
121 mtag%G_IERR = 1 ! tag element for projection error message
122 mtag%G_GAMA = 6
123 mtag%G_PLA = 1
124 mtag%G_EPSD = 1
125 mtag%G_DAMDL = 1
126 mtag%G_TSAIWU = 1
127 mtag%G_DMG = 1 + matparam%NMOD
128c
129 mtag%L_GAMA = 6
130 mtag%L_PLA = 1
131 mtag%L_EPSD = 1
132 mtag%L_CRAK = 2
133 mtag%L_STRA = 6
134 mtag%L_TSAIWU = 1
135 mtag%L_DMG = 1 + matparam%NMOD
136c
137 ALLOCATE(matparam%MODE(matparam%NMOD))
138 matparam%MODE(1) = "Tensile damage in direction 1"
139 matparam%MODE(2) = "Tensile damage in direction 2"
140 matparam%MODE(3) = "Global maximum plastic work"
141 IF (iflag > 0) THEN
142 matparam%MODE(4) = "Failure index in direction 1"
143 matparam%MODE(5) = "Failure index in direction 2"
144 matparam%MODE(6) = "Failure index in shear plane 12"
145 ENDIF
146c
147c-----------
148 CALL init_mat_keyword(matparam,"HOOK")
149 CALL init_mat_keyword(matparam,"ELASTO_PLASTIC")
150 CALL init_mat_keyword(matparam,"COMPRESSIBLE")
151 CALL init_mat_keyword(matparam,"ORTHOTROPIC")
152c-----------
153 ! Properties compatibility
154 CALL init_mat_keyword(matparam,"SOLID_ORTHOTROPIC")
155 IF (iflag == 0) THEN
156 CALL init_mat_keyword(matparam,"SHELL_ORTHOTROPIC")
157 ELSE
158 CALL init_mat_keyword(matparam,"SHELL_COMPOSITE")
159 ENDIF
160c--------
161 RETURN
162 END
#define my_real
Definition cppsort.cpp:32
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_read_mat25(uparam, maxuparam, nuparam, unitab, lsubmodel, mtag, id, titr, pm, israte, parmat, matparam)
subroutine init_mat_keyword(matparam, keyword)
integer, parameter nchartitle