OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_perturb.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_perturb ../starter/source/general_controls/computation/hm_read_perturb.F
25!||--- called by ------------------------------------------------------
26!|| lectur ../starter/source/starter/lectur.F
27!||--- calls -----------------------------------------------------
28!|| hm_option_count ../starter/source/devtools/hm_reader/hm_option_count.F
29!|| hm_read_perturb_fail ../starter/source/general_controls/computation/hm_read_perturb_fail.F
30!|| hm_read_perturb_part_shell ../starter/source/general_controls/computation/hm_read_perturb_part_shell.F
31!|| hm_read_perturb_part_solid ../starter/source/general_controls/computation/hm_read_perturb_part_solid.F
32!|| udouble ../starter/source/system/sysfus.F
33!||--- uses -----------------------------------------------------
34!|| hm_option_read_mod ../starter/share/modules1/hm_option_read_mod.F
35!|| message_mod ../starter/share/message_module/message_mod.F
36!|| submodel_mod ../starter/share/modules1/submodel_mod.F
37!||====================================================================
38 SUBROUTINE hm_read_perturb(MAT_PARAM,
39 1 IPART ,RNOISE ,IPARTC ,IPARTG ,IPARTSP ,
40 2 IGRPART ,IPM ,IPARTS ,PERTURB ,QP_IPERTURB,
41 3 QP_RPERTURB ,LSUBMODEL,UNITAB )
42C-----------------------------------------------
43C M o d u l e s
44C-----------------------------------------------
45 USE message_mod
46 USE groupdef_mod
47 USE unitab_mod
48 USE submodel_mod
50 USE mat_elem_mod
51C-----------------------------------------------
52C I m p l i c i t T y p e s
53C-----------------------------------------------
54#include "implicit_f.inc"
55C-----------------------------------------------
56C C o m m o n B l o c k s
57C-----------------------------------------------
58#include "com04_c.inc"
59#include "scr17_c.inc"
60#include "param_c.inc"
61#include "sphcom.inc"
62C-----------------------------------------------
63C D u m m y A r g u m e n t s
64C-----------------------------------------------
65 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
66 my_real
67 . RNOISE(NPERTURB,NUMELC+NUMELTG+NUMELS+NUMSPH),
68 . qp_rperturb(nperturb,4)
69c . RNOISE(*)
70 INTEGER IPART(LIPART1,*),IPARTC(*),IPARTSP(*),IPARTG(*),IPARTS(*),
71 . IPM(NPROPMI,*),PERTURB(NPERTURB),QP_IPERTURB(NPERTURB,6)
72 TYPE(SUBMODEL_DATA) LSUBMODEL(*)
73 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(INOUT) :: MAT_PARAM
74C-----------------------------------------------
75 TYPE (GROUP_) , DIMENSION(NGRPART) :: IGRPART
76C-----------------------------------------------
77C L o c a l V a r i a b l e s
78C-----------------------------------------------
79 INTEGER FLAG_FMT,I,J,K,ICOUNT,
80 . NUMA,I_METHOD,UID,
81 . CPT_PART,NB_RANDOM,I_SEED,DISTRIB(50),
82 . ii,nb_interv,sizey,igrprt,n,
83 . iok,seed,seed_random,ifailcrit,ityp,ifailmat,
84 . l,ifailtype,i_perturb_var,empty,idperturb(nperturb),
85 . igrprts,npart_shell,npart_solid,offs
86 INTEGER, DIMENSION(:), ALLOCATABLE :: INDEX,INDEX_ITYP
87 my_real :: MEAN,SD,MEAN_INPUT,SD_INPUT,MAX_DISTRIB,TEMP,MIN_VALUE,
88 . MAX_VALUE,INTERV,VALUE,MAX_VALUE1,MINVAL,MAXVAL,BID
89 my_real, DIMENSION(:), ALLOCATABLE :: array
90 CHARACTER MESS*40
91C-----------------------------------------------
92C E x t e r n a l F u n c t i o n s
93C-----------------------------------------------
94 DATA mess/'PERTURBATION DEFINITION '/
95C=======================================================================
96 ! Initialization and allocation of tables
97 ityp = 0
98 offs = 0
99 bid = zero
100 idperturb(1:nperturb) = 0
101c
102 ALLOCATE(index(numelc+numeltg+numels+numsph))
103 ALLOCATE(index_ityp(numelc+numeltg+numels+numsph))
104 index(:) = 0
105 index_ityp(:) = 0
106c
107c Counting PERTURB type
108 CALL hm_option_count('/PERTURB/PART/SHELL',npart_shell)
109 CALL hm_option_count('/PERTURB/PART/SOLID',npart_solid)
110c
111c /PERTURB/PART/SHELL
112c
113 IF (npart_shell > 0) THEN
114 ! Reading routine
116 . ipart ,rnoise ,ipartc ,ipartg ,igrpart ,
117 . ipm ,perturb ,lsubmodel,unitab ,idperturb ,
118 . index ,index_ityp,npart_shell,offs,qp_iperturb,
119 . qp_rperturb)
120 ! Computing the offset
121 offs = offs + npart_shell
122 ENDIF
123c
124c /PERTURB/PART/SOLID
125c
126 IF (npart_solid > 0) THEN
127 ! Reading routine
129 . ipart ,rnoise ,igrpart ,ipm ,iparts ,
130 . perturb,lsubmodel ,unitab ,idperturb,index ,
131 . index_ityp,npart_solid ,offs ,qp_iperturb,
132 . qp_rperturb)
133 ! Computing the offset
134 offs = offs + npart_solid
135 ENDIF
136c
137c /PERTURB/FAIL/BIQUAD
138c
139 CALL hm_read_perturb_fail(mat_param,
140 . ipart ,rnoise ,ipartc ,ipartg ,ipartsp ,
141 . igrpart ,iparts ,perturb ,idperturb,
142 . index ,index_ityp,npart_shell,offs ,qp_iperturb,
143 . qp_rperturb,lsubmodel,unitab)
144c
145c-------------------------------------------------------------
146 ! Checking for doubled IDs
147 CALL udouble(idperturb,1,nperturb,mess,0,bid)
148c-------------------------------------------------------------
149 IF (ALLOCATED(index)) DEALLOCATE(index)
150 IF (ALLOCATED(index_ityp)) DEALLOCATE(index_ityp)
151c-----------
152 RETURN
153 END
154
155
subroutine hm_option_count(entity_type, hm_option_number)
subroutine hm_read_perturb(mat_param, ipart, rnoise, ipartc, ipartg, ipartsp, igrpart, ipm, iparts, perturb, qp_iperturb, qp_rperturb, lsubmodel, unitab)
subroutine hm_read_perturb_fail(mat_param, ipart, rnoise, ipartc, ipartg, ipartsp, igrpart, iparts, perturb, idperturb, index, index_ityp, npart_shell, offs, qp_iperturb, qp_rperturb, lsubmodel, unitab)
subroutine hm_read_perturb_part_shell(ipart, rnoise, ipartc, ipartg, igrpart, ipm, perturb, lsubmodel, unitab, idperturb, index, index_ityp, npart_shell, offs, qp_iperturb, qp_rperturb)
subroutine hm_read_perturb_part_solid(ipart, rnoise, igrpart, ipm, iparts, perturb, lsubmodel, unitab, idperturb, index, index_ityp, npart_solid, offs, qp_iperturb, qp_rperturb)
#define seed()
Definition macros.h:43
subroutine udouble(list, ilist, nlist, mess, ir, rlist)
Definition sysfus.F:589