32 SUBROUTINE plot_curve(X, Y, NB_POINTS, INPUT_SIZE_X, INPUT_SIZE_Y,
33 . INPUT_X_MINVALUE, INPUT_Y_MINVALUE, INPUT_X_MAXVALUE,
34 . INPUT_Y_MAXVALUE, INPUT_SYMBOL, INPUT_CURVE_TYPE,
35 . INPUT_TXT_X, INPUT_TXT_Y)
43#include "implicit_f.inc"
57#include "remesh_c.inc"
63 INTEGER NB_POINTS,INPUT_SIZE_X,INPUT_SIZE_Y, INPUT_CURVE_TYPE
64 my_real INPUT_X_MINVALUE, INPUT_X_MAXVALUE, INPUT_Y_MINVALUE, INPUT_Y_MAXVALUE
65 CHARACTER*1 INPUT_SYMBOL
66 CHARACTER(*) INPUT_TXT_X, INPUT_TXT_Y
68 OPTIONAL :: input_size_x, input_size_y, input_x_minvalue, input_y_minvalue,
69 . input_x_maxvalue, input_y_maxvalue, input_symbol,
70 . input_curve_type, input_txt_x, input_txt_y
74 CHARACTER(len=60) :: FMTA
75 INTEGER I,J,II,CURVE(NB_POINTS)
77CHARACTER(LEN=NCHARLINE) :: CHAR(100)
78 CHARACTER(LEN=NCHARLINE) :: CHAR1(100)
79 CHARACTER(LEN=NCHARLINE) :: CHAR2
80 CHARACTER(LEN=NCHARLINE) :: TXT_X
81 CHARACTER(LEN=NCHARLINE) :: TXT_Y
83 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: GRID
105 IF ( .NOT.
PRESENT(input_size_x))
THEN
108 size_x = input_size_x
111 IF ( .NOT.
PRESENT(input_size_y))
THEN
114 size_y = input_size_y
117 IF ( .NOT.
PRESENT(input_x_minvalue))
THEN
120 x_minvalue =
min(x(i),x_minvalue)
123 x_minvalue = input_x_minvalue
126 IF ( .NOT.
PRESENT(input_y_minvalue))
THEN
129 y_minvalue =
min(y(i),y_minvalue)
132 y_minvalue = input_y_minvalue
135 IF ( .NOT.
PRESENT(input_x_maxvalue))
THEN
138 x_maxvalue =
max(x(i),x_maxvalue)
141 x_maxvalue = input_x_maxvalue
144 IF ( .NOT.
PRESENT(input_y_maxvalue))
THEN
147 y_maxvalue =
max(y(i),y_maxvalue)
150 y_maxvalue = input_y_maxvalue
153 IF ( .NOT.
PRESENT(input_symbol))
THEN
156 symbol(1:1) = input_symbol(1:1)
159 IF ( .NOT.
PRESENT(input_curve_type))
THEN
162 curve_type = input_curve_type
165 IF ( .NOT.
PRESENT(input_txt_x))
THEN
169 txt_x(1:len_trim(input_txt_x)) = input_txt_x(1:len_trim(input_txt_x))
172 IF ( .NOT.
PRESENT(input_txt_y))
THEN
176 txt_y(1:len_trim(input_txt_y)) = input_txt_y(1:len_trim(input_txt_y))
182 curve(1:nb_points) = 0
183 incr_x = (x_maxvalue-x_minvalue)/(size_x-1)
184 incr_y = (y_maxvalue-y_minvalue)/(size_y-1)
186 ALLOCATE(grid(size_x,size_y))
193 IF(curve_type == 0)
THEN
195 coordx =
min(size_x,
max(1,int((x(i) - x_minvalue)/incr_x)))
196 coordy =
min(size_y,
max(1,int((y(i) - y_minvalue)/incr_y)))
197 grid(coordx,coordy) = 1
199 ELSEIF(curve_type == 1)
THEN
201 coordx =
min(size_x,
max(1,int((x(i) - x_minvalue)/incr_x)))
202 coordy =
min(size_y,
max(1,int((y(i) - y_minvalue)/incr_y)))
214 IF( grid(i,size_y+1-j) == 1) char(j)(i:i)= symbol(1:1)
220 IF(
PRESENT(input_txt_y))
THEN
221 WRITE(iout,
'(12X,A)') txt_y(1:len_trim(txt_y))
224 WRITE(iout,
'(19X,A)')
'^'
225 WRITE(iout,
'(19X,A,A)')
'|',char(1)(1:size_x)
226 WRITE(iout,
'(9X,F7.3,1X,A,A,A)') y_maxvalue,
'--',
'|',char(2)(1:size_x)
228 WRITE(iout,
'(19X,A,A)')
'|',char(i)(1:size_x)
230 WRITE(iout,
'(9X,F7.3,1X,A,A,A)') y_minvalue,
'--',
'|',char(size_y)(1:size_x)
235 char2(size_x+2:size_x+3) =
'>'
236 IF(
PRESENT(input_txt_x) )
THEN
237 char2(size_x+4:size_x+3+len_trim(txt_x)) = txt_x(1:len_trim(txt_x))
240 lena = len_trim(char2)
241 WRITE(iout,
'(20X,A)') char2(1:lena)
245 char2(size_x:size_x)=
'|'
246 lena = len_trim(char2)
247 WRITE(iout,
'(20X,A)') char2(1:lena)
249 IF (size_x <= 10)
THEN
250 fmta=
'(14X,1PG11.3,5X,1PG11.3)'
251 ELSEIF (size_x <= 20)
THEN
252 fmta=
'(14X,1PG11.3,8X,1PG11.3)'
253 ELSEIF (size_x <= 30)
THEN
254 fmta=
'(14X,1PG11.3,18X,1PG11.3)'
255 ELSEIF (size_x <= 40)
THEN
256 fmta=
'(14X,1PG11.3,28X,1PG11.3)'
257 ELSEIF (size_x <= 50)
THEN
258 fmta=
'(14X,1PG11.3,38X,1PG11.3)'
259 ELSEIF (size_x <= 60)
THEN
260 fmta=
'(14X,1PG11.3,48X,1PG11.3)'
261 ELSEIF (size_x <= 70)
THEN
262 fmta=
'(14X,1PG11.3,58X,1PG11.3)'
263 ELSEIF (size_x <= 80)
THEN
264 fmta=
'(14X,1PG11.3,68X,1PG11.3)'
265 ELSEIF (size_x <= 90)
THEN
266 fmta=
'(14X,1PG11.3,78X,1PG11.3)'
268 fmta=
'(14 X,1PG11.3,85X,1PG11.3)'
271 WRITE(iout,fmt=fmta) x_minvalue,x_maxvalue
subroutine plot_curve(x, y, nb_points, input_size_x, input_size_y, input_x_minvalue, input_y_minvalue, input_x_maxvalue, input_y_maxvalue, input_symbol, input_curve_type, input_txt_x, input_txt_y)