42
43
44
50 USE mat_elem_mod
51
52
53
54#include "implicit_f.inc"
55
56
57
58#include "com04_c.inc"
59#include "scr17_c.inc"
60#include "param_c.inc"
61#include "sphcom.inc"
62
63
64
65 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
67 . rnoise(nperturb,numelc+numeltg+numels+numsph),
68 . qp_rperturb(nperturb,4)
69
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
74
75 TYPE (GROUP_) , DIMENSION(NGRPART) :: IGRPART
76
77
78
79 INTEGER FLAG_FMT,I,J,K,ICOUNT,
80 . NUMA,I_METHOD,UID,
81 . CPT_PART,NB_RANDOM,I_SEED,DISTRIB(50),
82 . ,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
91
92
93
94 DATA mess/'PERTURBATION DEFINITION '/
95
96
97 ityp = 0
98 offs = 0
99 bid = zero
100 idperturb(1:nperturb) = 0
101
102 ALLOCATE(index(numelc+numeltg+numels+numsph))
103 ALLOCATE(index_ityp(numelc+numeltg+numels+numsph))
104 index(:) = 0
105 index_ityp(:) = 0
106
107
110
111
112
113 IF (npart_shell > 0) THEN
114
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
121 offs = offs + npart_shell
122 ENDIF
123
124
125
126 IF (npart_solid > 0) THEN
127
129 . ipart ,rnoise ,igrpart ,ipm ,iparts ,
130 . perturb,lsubmodel ,unitab ,idperturb,index ,
131 . index_ityp,npart_solid ,offs ,qp_iperturb,
132 . qp_rperturb)
133
134 offs = offs + npart_solid
135 ENDIF
136
137
138
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)
144
145
146
147 CALL udouble(idperturb,1,nperturb,mess,0,bid)
148
149 IF (ALLOCATED(index)) DEALLOCATE(index)
150 IF (ALLOCATED(index_ityp)) DEALLOCATE(index_ityp)
151
152 RETURN
subroutine hm_option_count(entity_type, hm_option_number)
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)
subroutine udouble(list, ilist, nlist, mess, ir, rlist)