OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
plot_distrib.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!|| plot_distrib ../starter/source/general_controls/computation/plot_distrib.F
25!||--- called by ------------------------------------------------------
26!|| hm_read_perturb_fail ../starter/source/general_controls/computation/hm_read_perturb_fail.F
27!|| hm_read_perturb_part_shell ../starter/source/general_controls/computation/hm_read_perturb_part_shell.F
28!|| hm_read_perturb_part_solid ../starter/source/general_controls/computation/hm_read_perturb_part_solid.F
29!||--- uses -----------------------------------------------------
30!|| message_mod ../starter/share/message_module/message_mod.f
31!||====================================================================
32 SUBROUTINE plot_distrib( ARRAY,S_ARRAY, NB_INTERV,SIZEY,X_MINVALUE,
33 . X_MAXVALUE,Y_MAXVALUE,ECRIT)
34C-----------------------------------------------
35 USE message_mod
36C-----------------------------------------------
37C I m p l i c i t T y p e s
38C-----------------------------------------------
39#include "implicit_f.inc"
40C-----------------------------------------------
41C C o m m o n B l o c k s
42C-----------------------------------------------
43#include "units_c.inc"
44C-----------------------------------------------
45C D u m m y A r g u m e n t s
46C-----------------------------------------------
47 INTEGER NB_INTERV,SIZEY,S_ARRAY
49 . array(*),x_minvalue, x_maxvalue,y_maxvalue
50 CHARACTER*1 ECRIT
51 CHARACTER(len=60) :: FMTA,FMTB,FMTC
52C-----------------------------------------------
53C L o c a l V a r i a b l e s
54C-----------------------------------------------
55 INTEGER KK,FLAG_FMT,I,J,K,IGS,ID,FLAG_FMT_TMP,IFIX_TMP,
56 . isu,numa,j10(10),igauss,ifunc,uid,sub_id,max_part,
57 . cpt_part,ng,ity,nel,nft,ii,distrib(nb_interv),max_distrib
59 . mean,sd,mean_input,sd_input,temp,interv,
60 . VALUE,x_maxvalue1
61 CHARACTER*100 CHAR(100)
62 CHARACTER*100 CHAR1(100)
63 CHARACTER*100 CHAR2
64C=======================================================================
65 char=''
66 char1=''
67 char2=''
68 distrib(1:nb_interv) = 0
69 interv = (x_maxvalue-x_minvalue)/nb_interv
70 max_distrib = 0
71c
72 DO ii = 1, nb_interv
73 DO j = 1, s_array
74 IF(array(j) >= x_minvalue+interv*(ii-1) .AND.
75 . array(j) < x_minvalue+interv*ii) THEN
76 distrib(ii) = distrib(ii) + 1
77 ENDIF
78 IF(array(j) == x_maxvalue) distrib(ii) = distrib(ii) + 1
79 ENDDO
80 ENDDO
81
82 x_maxvalue1 =zero
83 DO ii = 1, nb_interv
84 VALUE = distrib(ii)
85 VALUE = VALUE/s_array
86 VALUE = VALUE * hundred
87 char(ii)= " "
88 x_maxvalue1 = max(x_maxvalue1,VALUE)
89 max_distrib = max(max_distrib,distrib(ii))
90 ENDDO
91c
92 DO ii = 1, nb_interv
93 VALUE = distrib(ii)
94 VALUE = VALUE/s_array
95 VALUE = VALUE * hundred
96 char(ii)= " "
97 DO j = 1,(sizey+1)
98 IF( VALUE > (j-1) * x_maxvalue1/(sizey+1)) THEN
99 char(ii)(j:j)= ecrit(1:1)
100
101 ENDIF
102 ENDDO
103 ENDDO
104
105 DO ii = 1, nb_interv
106 DO j = 1,(sizey+1)
107 char1(j)(ii:ii) = char(ii)(j:j)
108 ENDDO
109 ENDDO
110
111 IF(y_maxvalue /= zero) THEN
112 WRITE(iout,'(10X,1PG20.13)') y_maxvalue
113 ELSEIF(x_maxvalue1 /= zero) THEN
114 WRITE(iout,'(15X,I10)') max_distrib
115 ENDIF
116
117 DO ii = 1,(sizey+1)
118 IF (x_maxvalue1/(x_maxvalue1/(sizey+1)) > (sizey+1)-ii+1 )
119 . WRITE(iout,'(19X,A,A)') '|',char1((sizey+1)-ii+1)(1:nb_interv)
120 ENDDO
121c
122
123 DO ii = 1,nb_interv
124 char2(ii:ii) = '-'
125 ENDDO
126 char2(nb_interv:nb_interv+1) = '>'
127 WRITE(iout,'(20X,A)') char2(1:51)
128c
129 char2 = ' '
130 char2(1:1)= '|'
131 char2(nb_interv:nb_interv)= '|'
132 WRITE(iout,'(20X,A)') char2(1:51)
133c WRITE(IOUT,'(10X,1PG20.13,30X,1PG20.13)') X_MINVALUE,X_MAXVALUE
134 IF (nb_interv <= 10) THEN
135 fmta='(10X,1PG20.13,2X,1PG20.13)'
136 ELSEIF (nb_interv <= 20) THEN
137 fmta='(10X,1PG20.13,5X,1PG20.13)'
138 ELSEIF (nb_interv <= 30) THEN
139 fmta='(10X,1PG20.13,15X,1PG20.13)'
140 ELSEIF (nb_interv <= 40) THEN
141 fmta='(10X,1PG20.13,25X,1PG20.13)'
142 ELSEIF (nb_interv <= 50) THEN
143 fmta='(10X,1PG20.13,35X,1PG20.13)'
144 ELSEIF (nb_interv <= 60) THEN
145 fmta='(10X,1PG20.13,45X,1PG20.13)'
146 ELSEIF (nb_interv <= 70) THEN
147 fmta='(10X,1PG20.13,55X,1PG20.13)'
148 ELSEIF (nb_interv <= 80) THEN
149 fmta='(10X,1PG20.13,65X,1PG20.13)'
150 ELSEIF (nb_interv <= 90) THEN
151 fmta='(10X,1PG20.13,75X,1PG20.13)'
152 ELSE
153 fmta='(10X,1PG20.13,85X,1PG20.13)'
154 ENDIF
155c
156 WRITE(iout,fmt=fmta) x_minvalue,x_maxvalue
157c
158 WRITE(iout,*) ' '
159 WRITE(iout,*) ' '
160C------------------------------
161 RETURN
162 END
#define my_real
Definition cppsort.cpp:32
#define max(a, b)
Definition macros.h:21
subroutine plot_distrib(array, s_array, nb_interv, sizey, x_minvalue, x_maxvalue, y_maxvalue, ecrit)
program starter
Definition starter.F:39