From: <and...@us...> - 2008-08-02 08:49:57
|
Revision: 8605 http://plplot.svn.sourceforge.net/plplot/?rev=8605&view=rev Author: andrewross Date: 2008-08-02 08:50:07 +0000 (Sat, 02 Aug 2008) Log Message: ----------- Change f95 examples 6 and 7 to remove leading blank spaces in axis labels. This is already done for the f77 versions and ensures results which are identical to the C version of the examples. Modified Paths: -------------- trunk/examples/f95/x06f.f90 trunk/examples/f95/x07f.f90 Modified: trunk/examples/f95/x06f.f90 =================================================================== --- trunk/examples/f95/x06f.f90 2008-08-01 21:21:05 UTC (rev 8604) +++ trunk/examples/f95/x06f.f90 2008-08-02 08:50:07 UTC (rev 8605) @@ -56,8 +56,16 @@ do i=0,12 ! Write the digits to the left of the frame +! N.B. The chain of if statements is just to ensure no leading +! blanks, consistent with the C version of the example. - write (text,'(i3)') 10*i + if(i.eq.0) then + write (text,'(i1)') 10*i + elseif(i.le.9) then + write (text,'(i2)') 10*i + else + write (text,'(i3)') 10*i + endif call plmtex('lv', 1.0_plflt, (1.0_plflt-(2*i+1)/26.0_plflt), & 1.0_plflt, text) do j=0,9 Modified: trunk/examples/f95/x07f.f90 =================================================================== --- trunk/examples/f95/x07f.f90 2008-08-01 21:21:05 UTC (rev 8604) +++ trunk/examples/f95/x07f.f90 2008-08-02 08:50:07 UTC (rev 8605) @@ -62,8 +62,18 @@ do i=0,9 ! Write the digits to the left of the frame +! N.B. The chain of if statements is just to ensure no leading +! blanks, consistent with the C version of the example. - write (text,'(i4)') base(l)+10*i + if(base(l)+10*i.eq.0) then + write (text,'(i1)') base(l)+10*i + elseif(base(l)+10*i.lt.100) then + write (text,'(i2)') base(l)+10*i + elseif(base(l)+10*i.lt.1000) then + write (text,'(i3)') base(l)+10*i + else + write (text,'(i4)') base(l)+10*i + endif call plmtex('lv', 1.0_plflt, (0.95_plflt-0.1_plflt*i), & 1.0_plflt, text) do j=0,9 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2009-08-07 19:47:54
|
Revision: 10221 http://plplot.svn.sourceforge.net/plplot/?rev=10221&view=rev Author: airwin Date: 2009-08-07 19:47:38 +0000 (Fri, 07 Aug 2009) Log Message: ----------- Use same CMakeLists.txt file for the core build (if BUILD_TEST=ON) and install of the Fortran 95 examples and the install-tree build of the Fortran 95 examples. Modified Paths: -------------- trunk/examples/f95/CMakeLists.txt Removed Paths: ------------- trunk/examples/f95/CMakeLists.txt_installed_examples_f95 Modified: trunk/examples/f95/CMakeLists.txt =================================================================== --- trunk/examples/f95/CMakeLists.txt 2009-08-07 19:32:52 UTC (rev 10220) +++ trunk/examples/f95/CMakeLists.txt 2009-08-07 19:47:38 UTC (rev 10221) @@ -1,7 +1,7 @@ # examples/f95/CMakeLists.txt ### Process this file with cmake to produce Makefile ### -# Copyright (C) 2006 Alan W. Irwin +# Copyright (C) 2006, 2007, 2008, 2009 Alan W. Irwin # # This file is part of PLplot. # @@ -18,7 +18,11 @@ # along with PLplot; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -set(f95_SRCS) +# N.B. This file is used for both the core build (which installs the examples +# and optionally [depending on BUILD_TEST} builds them) and the installed +# examples build. The core build has BUILD_TEST OFF or ON at user option +# and CORE_BUILD always ON. The installed examples build always has +# BUILD_TEST ON and CORE_BUILD OFF. set(f95_STRING_INDICES "01" @@ -55,32 +59,65 @@ "31" ) -# Process fortran header file to define isnan -if(FORTRAN_HAVE_ISNAN) - set(HAVE_F77_ISNAN_FALSE !) -else(FORTRAN_HAVE_ISNAN) - set(HAVE_F77_ISNAN_TRUE !) -endif(FORTRAN_HAVE_ISNAN) -configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/plf95demos.inc.cmake - ${CMAKE_CURRENT_BINARY_DIR}/plf95demos.inc - ) -set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/plf95demos.inc - PROPERTIES GENERATED ON) -include_directories( - ${CMAKE_CURRENT_BINARY_DIR} - ) +if(CORE_BUILD) + set(f95_SRCS) + foreach(STRING_INDEX ${f95_STRING_INDICES}) + set(f95_SRCS ${f95_SRCS} x${STRING_INDEX}f.f90) + endforeach(STRING_INDEX ${f95_STRING_INDICES}) + # Process fortran header file to define isnan + if(FORTRAN_HAVE_ISNAN) + set(HAVE_F77_ISNAN_FALSE !) + else(FORTRAN_HAVE_ISNAN) + set(HAVE_F77_ISNAN_TRUE !) + endif(FORTRAN_HAVE_ISNAN) + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/plf95demos.inc.cmake + ${CMAKE_CURRENT_BINARY_DIR}/plf95demos.inc + ) + set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/plf95demos.inc + PROPERTIES GENERATED ON) + include_directories( + ${CMAKE_CURRENT_BINARY_DIR} + ) + + install(FILES ${f95_SRCS} + DESTINATION ${DATA_DIR}/examples/f95 + ) + + set(FC ${CMAKE_Fortran_COMPILER}) + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/Makefile.examples.in + ${CMAKE_CURRENT_BINARY_DIR}/Makefile.examples + ) + + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Makefile.examples + DESTINATION ${DATA_DIR}/examples/f95 + RENAME Makefile + ) + + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/plf95demos.inc + DESTINATION ${DATA_DIR}/examples/f95 + ) + + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt + DESTINATION ${DATA_DIR}/examples/f95 + ) +endif(CORE_BUILD) + if(BUILD_TEST) - remove_definitions("-DHAVE_CONFIG_H") + if(CORE_BUILD) + remove_definitions("-DHAVE_CONFIG_H") - # For CMake-2.6.0 and above, the module files are created by - # default during the library build in the bindings/f95 directory. - include_directories(${CMAKE_BINARY_DIR}/bindings/f95) -endif(BUILD_TEST) -foreach(STRING_INDEX ${f95_STRING_INDICES}) - set(f95_SRCS ${f95_SRCS} x${STRING_INDEX}f.f90) - if(BUILD_TEST) + # For CMake-2.6.0 and above, the module files are created by + # default during the library build in the bindings/f95 directory. + include_directories(${CMAKE_BINARY_DIR}/bindings/f95) + else(CORE_BUILD) + include_directories(${INCLUDE_DIR} ${F95_MOD_DIR}) + endif(CORE_BUILD) + + set_property(GLOBAL PROPERTY TARGETS_examples_f95) + foreach(STRING_INDEX ${f95_STRING_INDICES}) # Need unique target name add_executable(x${STRING_INDEX}f95 x${STRING_INDEX}f.f90) set_target_properties( @@ -88,34 +125,11 @@ OUTPUT_NAME x${STRING_INDEX}f ) if(STATIC_OPTS) - target_link_libraries(x${STRING_INDEX}f95 plplotf95opts${LIB_TAG} plplotf95${LIB_TAG}) + target_link_libraries(x${STRING_INDEX}f95 plplotf95opts${LIB_TAG} plplotf95${LIB_TAG}) else(STATIC_OPTS) - target_link_libraries(x${STRING_INDEX}f95 plplotf95${LIB_TAG}) + target_link_libraries(x${STRING_INDEX}f95 plplotf95${LIB_TAG}) endif(STATIC_OPTS) - endif(BUILD_TEST) -endforeach(STRING_INDEX ${f95_STRING_INDICES}) + set_property(GLOBAL APPEND PROPERTY TARGETS_examples_f95 x${STRING_INDEX}f95) + endforeach(STRING_INDEX ${f95_STRING_INDICES}) +endif(BUILD_TEST) -install(FILES ${f95_SRCS} - DESTINATION ${DATA_DIR}/examples/f95 - ) - -set(FC ${CMAKE_Fortran_COMPILER}) -configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/Makefile.examples.in - ${CMAKE_CURRENT_BINARY_DIR}/Makefile.examples - ) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Makefile.examples - DESTINATION ${DATA_DIR}/examples/f95 - RENAME Makefile - ) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/plf95demos.inc - DESTINATION ${DATA_DIR}/examples/f95 - ) - -install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt_installed_examples_f95 -DESTINATION ${DATA_DIR}/examples/f95 -RENAME CMakeLists.txt -) - Deleted: trunk/examples/f95/CMakeLists.txt_installed_examples_f95 =================================================================== --- trunk/examples/f95/CMakeLists.txt_installed_examples_f95 2009-08-07 19:32:52 UTC (rev 10220) +++ trunk/examples/f95/CMakeLists.txt_installed_examples_f95 2009-08-07 19:47:38 UTC (rev 10221) @@ -1,70 +0,0 @@ -# f77/CMakeLists.txt for installed PLplot examples. -### Process this file with cmake to produce Makefile -### -# Copyright (C) 2009 Alan W. Irwin -# -# This file is part of PLplot. -# -# PLplot is free software; you can redistribute it and/or modify -# it under the terms of the GNU Library General Public License as published -# by the Free Software Foundation; version 2 of the License. -# -# PLplot is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public License -# along with PLplot; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -set(f77_STRING_INDICES -"01" -"02" -"03" -"04" -"05" -"06" -"07" -"08" -"09" -"10" -"11" -"12" -"13" -"14" -"15" -"16" -"16a" -"17" -"18" -"19" -"20" -"21" -"22" -"23" -"24" -"25" -"26" -"27" -"28" -"29" -"30" -"31" -) - -include_directories(${INCLUDE_DIR} ${F95_MOD_DIR}) -foreach(STRING_INDEX ${f77_STRING_INDICES}) - # Need unique target name - add_executable(x${STRING_INDEX}f95 x${STRING_INDEX}f.f90) - set_target_properties( - x${STRING_INDEX}f95 PROPERTIES - OUTPUT_NAME x${STRING_INDEX}f - ) - if(STATIC_OPTS) - target_link_libraries(x${STRING_INDEX}f95 plplotf95opts${LIB_TAG} plplotf95${LIB_TAG}) - else(STATIC_OPTS) - target_link_libraries(x${STRING_INDEX}f95 plplotf95${LIB_TAG}) - endif(STATIC_OPTS) - set_property(GLOBAL APPEND PROPERTY TARGETS_examples_f95 x${STRING_INDEX}f95) -endforeach(STRING_INDEX ${f77_STRING_INDICES}) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2011-10-19 23:26:30
|
Revision: 11984 http://plplot.svn.sourceforge.net/plplot/?rev=11984&view=rev Author: andrewross Date: 2011-10-19 23:26:23 +0000 (Wed, 19 Oct 2011) Log Message: ----------- Update fortran 95 examples style to remove obsolete syntax and make use of some f95 features. Fixes compiler warnings. Modified Paths: -------------- trunk/examples/f95/x02f.f90 trunk/examples/f95/x03f.f90 trunk/examples/f95/x06f.f90 trunk/examples/f95/x07f.f90 trunk/examples/f95/x08f.f90 trunk/examples/f95/x09f.f90 trunk/examples/f95/x11f.f90 trunk/examples/f95/x12f.f90 trunk/examples/f95/x13f.f90 trunk/examples/f95/x14f.f90 trunk/examples/f95/x15f.f90 trunk/examples/f95/x16af.f90 trunk/examples/f95/x16f.f90 trunk/examples/f95/x17f.f90 trunk/examples/f95/x18f.f90 trunk/examples/f95/x19f.f90 trunk/examples/f95/x20f.f90 trunk/examples/f95/x21f.f90 trunk/examples/f95/x23f.f90 trunk/examples/f95/x24f.f90 trunk/examples/f95/x26f.f90 trunk/examples/f95/x31f.f90 Modified: trunk/examples/f95/x02f.f90 =================================================================== --- trunk/examples/f95/x02f.f90 2011-10-19 22:46:13 UTC (rev 11983) +++ trunk/examples/f95/x02f.f90 2011-10-19 23:26:23 UTC (rev 11984) @@ -121,10 +121,10 @@ subroutine draw_windows( nw, cmap0_offset ) use plplot implicit none - integer nw, cmap0_offset - integer i,j - real(kind=plflt) vmin, vmax - character*3 text + integer :: nw, cmap0_offset + integer :: i,j + real(kind=plflt) :: vmin, vmax + character (len=3) :: text call plschr(0.0_plflt, 3.5_plflt) Modified: trunk/examples/f95/x03f.f90 =================================================================== --- trunk/examples/f95/x03f.f90 2011-10-19 22:46:13 UTC (rev 11983) +++ trunk/examples/f95/x03f.f90 2011-10-19 23:26:23 UTC (rev 11984) @@ -22,10 +22,10 @@ use plplot, PI => PL_PI implicit none - character*3 text - real(kind=plflt) x0(0:360), y0(0:360) - real(kind=plflt) x(0:360), y(0:360), dtr, theta, dx, dy, r, offset - integer i, nsp + character (len=3) :: text + real(kind=plflt), dimension(0:360) :: x0, y0, x, y + real(kind=plflt) :: dtr, theta, dx, dy, r, offset + integer :: i, nsp ! Process command-line arguments call plparseopts(PL_PARSE_FULL) Modified: trunk/examples/f95/x06f.f90 =================================================================== --- trunk/examples/f95/x06f.f90 2011-10-19 22:46:13 UTC (rev 11983) +++ trunk/examples/f95/x06f.f90 2011-10-19 23:26:23 UTC (rev 11984) @@ -21,10 +21,10 @@ use plplot implicit none - integer i, j, k, font, kind_font, maxfont + integer :: i, j, k, font, kind_font, maxfont real(kind=plflt), dimension(1:1) :: x, y - character*3 text + character (len=3) :: text ! Process command-line arguments call plparseopts(PL_PARSE_FULL) Modified: trunk/examples/f95/x07f.f90 =================================================================== --- trunk/examples/f95/x07f.f90 2011-10-19 22:46:13 UTC (rev 11983) +++ trunk/examples/f95/x07f.f90 2011-10-19 23:26:23 UTC (rev 11984) @@ -22,7 +22,7 @@ use plplot implicit none - character*4 text + character (len=4) :: text integer i, j, k, l, base(20) data base / & Modified: trunk/examples/f95/x08f.f90 =================================================================== --- trunk/examples/f95/x08f.f90 2011-10-19 22:46:13 UTC (rev 11983) +++ trunk/examples/f95/x08f.f90 2011-10-19 23:26:23 UTC (rev 11984) @@ -27,7 +27,7 @@ parameter (xdim=99, ydim=100, xpts=35, ypts=46) real(kind=plflt) x(xdim), y(ydim), z(xdim,ypts), xx, yy, r - character*80 title(2) + character (len=80) title(2) real(kind=plflt) alt(2),az(2) data alt /60.0_plflt,20.0_plflt/ data az /30.0_plflt,60.0_plflt/ Modified: trunk/examples/f95/x09f.f90 =================================================================== --- trunk/examples/f95/x09f.f90 2011-10-19 22:46:13 UTC (rev 11983) +++ trunk/examples/f95/x09f.f90 2011-10-19 23:26:23 UTC (rev 11984) @@ -201,7 +201,7 @@ real(kind=plflt) xg(xdim, ydim+1), yg(xdim, ydim+1), xtm(NPLT), ytm(NPLT) real(kind=plflt) clevel(20) - character*8 xopt, yopt + character(len=8) xopt, yopt nx = NCX ny = NCY Modified: trunk/examples/f95/x11f.f90 =================================================================== --- trunk/examples/f95/x11f.f90 2011-10-19 22:46:13 UTC (rev 11983) +++ trunk/examples/f95/x11f.f90 2011-10-19 23:26:23 UTC (rev 11984) @@ -26,7 +26,7 @@ real(kind=plflt) x(xpts), y(ypts), z(xpts,ypts), xx, yy - character*80 title(2) + character(len=80) title(2) real(kind=plflt) alt(2),az(2) integer opt(2) data alt /33.0_plflt,17.0_plflt/ Modified: trunk/examples/f95/x12f.f90 =================================================================== --- trunk/examples/f95/x12f.f90 2011-10-19 22:46:13 UTC (rev 11983) +++ trunk/examples/f95/x12f.f90 2011-10-19 23:26:23 UTC (rev 11984) @@ -22,10 +22,10 @@ use plplot implicit none - character*20 string - integer i - real(kind=plflt) y0(10) - real(kind=plflt) pos(5), red(5), green(5), blue(5) + character(len=20) :: string + integer :: i + real(kind=plflt) :: y0(10) + real(kind=plflt) :: pos(5), red(5), green(5), blue(5) data pos /0.0_plflt, 0.25_plflt, 0.5_plflt, 0.75_plflt, 1.0_plflt/ data red /0.0_plflt, 0.25_plflt, 0.5_plflt, 1.0_plflt, 1.0_plflt/ Modified: trunk/examples/f95/x13f.f90 =================================================================== --- trunk/examples/f95/x13f.f90 2011-10-19 22:46:13 UTC (rev 11983) +++ trunk/examples/f95/x13f.f90 2011-10-19 23:26:23 UTC (rev 11984) @@ -23,7 +23,7 @@ implicit none real(kind=plflt) just, dx, dy, x(500), y(500), per(5) integer i, j, dthet, theta0, theta1, theta - character*20 text(5) + character(len=20),dimension(5) :: text data text / 'Maurice', 'Geoffrey', 'Alan', 'Rafael', 'Vince'/ ! Process command-line arguments Modified: trunk/examples/f95/x14f.f90 =================================================================== --- trunk/examples/f95/x14f.f90 2011-10-19 22:46:13 UTC (rev 11983) +++ trunk/examples/f95/x14f.f90 2011-10-19 23:26:23 UTC (rev 11984) @@ -30,19 +30,19 @@ integer digmax - character*80 driver - character*15 geometry_master - character*15 geometry_slave + character(len=80) :: driver + character(len=15) :: geometry_master + character(len=15) :: geometry_slave - integer fam, num, bmax + integer :: fam, num, bmax - real(kind=plflt) x(101), y(101) - real(kind=plflt) xs(6), ys(6) - real(kind=plflt) xscale, yscale, xoff, yoff + real(kind=plflt), dimension(101) :: x, y + real(kind=plflt), dimension(6) :: xs, ys + real(kind=plflt) :: xscale, yscale, xoff, yoff common /plotdat/ x, y, xs, ys, xscale, yscale, xoff, yoff - real(kind=plflt) xp0, yp0 - integer xleng0, yleng0, xoff0, yoff0 - logical valid_geometry + real(kind=plflt) :: xp0, yp0 + integer :: xleng0, yleng0, xoff0, yoff0 + logical :: valid_geometry geometry_master = '500x410+100+200' geometry_slave = '500x410+650+200' @@ -164,11 +164,10 @@ use plplot implicit none - real(kind=plflt) x(101), y(101) - real(kind=plflt) xs(6), ys(6) - real(kind=plflt) xscale, yscale, xoff, yoff, & - xmin, xmax, ymin, ymax - integer i + real(kind=plflt), dimension(101) :: x, y + real(kind=plflt), dimension(6) :: xs, ys + real(kind=plflt) :: xscale, yscale, xoff, yoff, xmin, xmax, ymin, ymax + integer :: i common /plotdat/ x, y, xs, ys, xscale, yscale, xoff, yoff do i = 1, 60 @@ -213,10 +212,10 @@ subroutine plot2() use plplot implicit none - real(kind=plflt) x(101), y(101) - real(kind=plflt) xs(6), ys(6) - real(kind=plflt) xscale, yscale, xoff, yoff - integer i + real(kind=plflt), dimension(101) :: x, y + real(kind=plflt), dimension(6) :: xs, ys + real(kind=plflt) :: xscale, yscale, xoff, yoff + integer :: i common /plotdat/ x, y, xs, ys, xscale, yscale, xoff, yoff !====================================================================== @@ -255,10 +254,10 @@ use plplot, PI => PL_PI implicit none - real(kind=plflt) x(101), y(101) - real(kind=plflt) xs(6), ys(6) - real(kind=plflt) xscale, yscale, xoff, yoff - integer i + real(kind=plflt), dimension(101) :: x, y + real(kind=plflt), dimension(6) :: xs, ys + real(kind=plflt) :: xscale, yscale, xoff, yoff + integer :: i common /plotdat/ x, y, xs, ys, xscale, yscale, xoff, yoff call pladv(0) @@ -301,10 +300,10 @@ use plplot, PI => PL_PI implicit none - character*3 text - real(kind=plflt) x0(0:360), y0(0:360) - real(kind=plflt) x(0:360), y(0:360), dtr, theta, dx, dy, r - integer i, j, nsp + character(len=3) :: text + real(kind=plflt), dimension(0:360) :: x0, y0, x, y + real(kind=plflt) :: dtr, theta, dx, dy, r + integer :: i, j, nsp dtr = PI/180.0_plflt do i=0,360 @@ -391,17 +390,18 @@ use plplot, PI => PL_PI implicit none - integer i, j, nptsx, nptsy, xdim, ydim + integer :: i, j, nptsx, nptsy, xdim, ydim ! xdim and ydim are the absolute static dimensions. ! nptsx, and nptsy are the (potentially dynamic) defined area of the 2D ! arrays that is actually used. parameter (xdim=99, ydim=100, nptsx=35,nptsy=46) - real(kind=plflt) z(xdim, ydim), w(xdim, ydim), clevel(11), & - xg1(xdim), yg1(ydim), & - xg2(xdim, ydim), yg2(xdim, ydim) - real(kind=plflt) xx, yy, argx, argy, distort - real(kind=plflt) tr(6) + real(kind=plflt), dimension(xdim,ydim) :: z, w, xg2, yg2 + real(kind=plflt), dimension(11) :: clevel + real(kind=plflt), dimension(xdim) :: xg1 + real(kind=plflt), dimension(ydim) :: yg1 + real(kind=plflt) :: xx, yy, argx, argy, distort + real(kind=plflt), dimension(6) :: tr data clevel /-1._plflt, -0.8_plflt, -0.6_plflt, -0.4_plflt, & -0.2_plflt, & Modified: trunk/examples/f95/x15f.f90 =================================================================== --- trunk/examples/f95/x15f.f90 2011-10-19 22:46:13 UTC (rev 11983) +++ trunk/examples/f95/x15f.f90 2011-10-19 23:26:23 UTC (rev 11984) @@ -158,7 +158,7 @@ integer xdim, XPTS, YPTS real(kind=plflt) z(xdim,YPTS), zmin, zmax - character*1 undefined + character(len=1) undefined real(kind=plflt) shade_min, shade_max, sh_color integer sh_cmap, sh_width integer min_color, min_width, max_color, max_width @@ -214,7 +214,7 @@ integer xdim, XPTS, YPTS real(kind=plflt) z(xdim,YPTS), zmin, zmax - character*1 undefined + character(len=1) undefined real(kind=plflt) shade_min, shade_max, sh_color integer sh_cmap, sh_width integer min_color, min_width, max_color, max_width Modified: trunk/examples/f95/x16af.f90 =================================================================== --- trunk/examples/f95/x16af.f90 2011-10-19 22:46:13 UTC (rev 11983) +++ trunk/examples/f95/x16af.f90 2011-10-19 23:26:23 UTC (rev 11984) @@ -147,7 +147,7 @@ integer i, j, kx, lx, ky, ly integer sh_cmap, sh_width integer min_color, min_width, max_color, max_width - character*8 xopt, yopt + character(len=8) xopt, yopt ! Set up for plshade call Modified: trunk/examples/f95/x16f.f90 =================================================================== --- trunk/examples/f95/x16f.f90 2011-10-19 22:46:13 UTC (rev 11983) +++ trunk/examples/f95/x16f.f90 2011-10-19 23:26:23 UTC (rev 11984) @@ -36,7 +36,7 @@ integer fill_width, cont_color, cont_width integer i, j ! dummy to fill argument list with something not currently used. - character*1 defined + character(len=1) defined real(kind=plflt) tr(6) ! Process command-line arguments Modified: trunk/examples/f95/x17f.f90 =================================================================== --- trunk/examples/f95/x17f.f90 2011-10-19 22:46:13 UTC (rev 11983) +++ trunk/examples/f95/x17f.f90 2011-10-19 23:26:23 UTC (rev 11984) @@ -32,10 +32,10 @@ real(kind=plflt) y1, y2, y3, y4, ymin, ymax, xlab, ylab real(kind=plflt) t, tmin, tmax, tjump, dt, noise integer colbox, collab, colline(4), styline(4) - character*20 legline(4) + character(len=20) legline(4) logical pl_errcode - character*80 errmsg + character(len=80) errmsg ! Process command-line arguments call plparseopts(PL_PARSE_FULL) Modified: trunk/examples/f95/x18f.f90 =================================================================== --- trunk/examples/f95/x18f.f90 2011-10-19 22:46:13 UTC (rev 11983) +++ trunk/examples/f95/x18f.f90 2011-10-19 23:26:23 UTC (rev 11984) @@ -33,9 +33,8 @@ parameter ( NPTS = 1000 ) integer i, k - real(kind=plflt) x(NPTS), y(NPTS), z(NPTS) - real(kind=plflt) r - character*80 title + real(kind=plflt), dimension(NPTS) :: x, y, z, r + character(len=80) title integer opt(4) real(kind=plflt) alt(4) @@ -44,6 +43,8 @@ data alt / 20.0_plflt, 35.0_plflt, 50.0_plflt, 65.0_plflt / data az / 30.0_plflt, 40.0_plflt, 50.0_plflt, 60.0_plflt / + integer, dimension(NPTS) :: ia = (/(i,i=1,NPTS)/) + ! Process command-line arguments call plparseopts(PL_PARSE_FULL) @@ -55,19 +56,17 @@ call test_poly(k, alt(k), az(k)) enddo -! From the mind of a sick and twisted physicist... +! From the mind of a sick and twisted physicist... - do i = 1,NPTS - z(i) = -1._plflt + 2._plflt * dble (i-1) / dble (NPTS) + z = -1._plflt + 2._plflt * dble (ia-1) / dble (NPTS) -! Pick one ... +! Pick one ... -! r = 1. - dble (i-1) / dble (NPTS) - r = z(i) +! r = 1. - dble (ia-1) / dble (NPTS) + r = z - x(i) = r * cos( 2._plflt * PI * 6._plflt * dble (i-1) / dble (NPTS) ) - y(i) = r * sin( 2._plflt * PI * 6._plflt * dble (i-1) / dble (NPTS) ) - enddo + x = r * cos( 2._plflt * PI * 6._plflt * dble (ia-1) / dble (NPTS) ) + y = r * sin( 2._plflt * PI * 6._plflt * dble (ia-1) / dble (NPTS) ) do k = 1, 4 call pladv(0) @@ -116,10 +115,10 @@ .true., .false., .true., .false., & .false., .true., .false., .true., & .true., .true., .false., .false. / - real(kind=plflt) theta, phi - integer ia - THETA(ia) = (TWOPI * (ia) /20._plflt) - PHI(ia) = (PI * (ia) / 20.1_plflt) + integer, dimension(0:20) :: ia = (/(j,j=0,20)/) + real(kind=plflt), dimension(0:20) :: theta, phi + theta = TWOPI * ia /20._plflt + phi = PI * ia / 20.1_plflt call pladv(0) call plvpor(0.0_plflt, 1.0_plflt, 0.0_plflt, 0.9_plflt) @@ -143,25 +142,25 @@ do i=0,19 do j=0,19 - x(1) = sin( PHI(j) ) * cos( THETA(i) ) - y(1) = sin( PHI(j) ) * sin( THETA(i) ) - z(1) = cos( PHI(j) ) + x(1) = sin( phi(j) ) * cos( theta(i) ) + y(1) = sin( phi(j) ) * sin( theta(i) ) + z(1) = cos( phi(j) ) - x(2) = sin( PHI(j+1) ) * cos( THETA(i) ) - y(2) = sin( PHI(j+1) ) * sin( THETA(i) ) - z(2) = cos( PHI(j+1) ) + x(2) = sin( phi(j+1) ) * cos( theta(i) ) + y(2) = sin( phi(j+1) ) * sin( theta(i) ) + z(2) = cos( phi(j+1) ) - x(3) = sin( PHI(j+1) ) * cos( THETA(i+1) ) - y(3) = sin( PHI(j+1) ) * sin( THETA(i+1) ) - z(3) = cos( PHI(j+1) ) + x(3) = sin( phi(j+1) ) * cos( theta(i+1) ) + y(3) = sin( phi(j+1) ) * sin( theta(i+1) ) + z(3) = cos( phi(j+1) ) - x(4) = sin( PHI(j) ) * cos( THETA(i+1) ) - y(4) = sin( PHI(j) ) * sin( THETA(i+1) ) - z(4) = cos( PHI(j) ) + x(4) = sin( phi(j) ) * cos( theta(i+1) ) + y(4) = sin( phi(j) ) * sin( theta(i+1) ) + z(4) = cos( phi(j) ) - x(5) = sin( PHI(j) ) * cos( THETA(i) ) - y(5) = sin( PHI(j) ) * sin( THETA(i) ) - z(5) = cos( PHI(j) ) + x(5) = sin( phi(j) ) * cos( theta(i) ) + y(5) = sin( phi(j) ) * sin( theta(i) ) + z(5) = cos( phi(j) ) call plpoly3(x, y, z, draw(:,k), .true.) enddo Modified: trunk/examples/f95/x19f.f90 =================================================================== --- trunk/examples/f95/x19f.f90 2011-10-19 22:46:13 UTC (rev 11983) +++ trunk/examples/f95/x19f.f90 2011-10-19 23:26:23 UTC (rev 11984) @@ -89,8 +89,8 @@ implicit none integer :: axis, length real(kind=plflt) :: value - character*(length) label - character*5 direction_label + character(len=length) label + character(len=5) direction_label real(kind=plflt) :: label_val = 0.0_plflt real(kind=plflt) :: normalize_longitude Modified: trunk/examples/f95/x20f.f90 =================================================================== --- trunk/examples/f95/x20f.f90 2011-10-19 22:46:13 UTC (rev 11983) +++ trunk/examples/f95/x20f.f90 2011-10-19 23:26:23 UTC (rev 11984) @@ -97,7 +97,7 @@ logical dbg logical nosombrero logical nointeractive - character*80 f_name + character(len=80) f_name ! ! Bugs in plimage(): @@ -304,7 +304,7 @@ implicit none integer bytes - character*8 string + character(len=8) string integer i integer ierr Modified: trunk/examples/f95/x21f.f90 =================================================================== --- trunk/examples/f95/x21f.f90 2011-10-19 22:46:13 UTC (rev 11983) +++ trunk/examples/f95/x21f.f90 2011-10-19 23:26:23 UTC (rev 11984) @@ -46,7 +46,7 @@ real(kind=plflt) zmin, zmax, lzmin, lzmax integer i, j, k integer alg - character*80 title(6) + character(len=80) title(6) data title /'Cubic Spline Approximation', & 'Delaunay Linear Interpolation', & 'Natural Neighbors Interpolation', & @@ -63,7 +63,7 @@ integer ii, jj real(kind=plflt) dist, d - character*1 defined + character(len=1) defined xmin = -0.2_plflt ymin = -0.2_plflt Modified: trunk/examples/f95/x23f.f90 =================================================================== --- trunk/examples/f95/x23f.f90 2011-10-19 22:46:13 UTC (rev 11983) +++ trunk/examples/f95/x23f.f90 2011-10-19 23:26:23 UTC (rev 11984) @@ -31,14 +31,14 @@ real(kind=plflt) xmin, xmax, ymin, ymax, ycharacter_scale, yoffset real(kind=plflt) chardef, charht, deltax, deltay, x, y integer i, j, page, length, slice - character*20 cmdString + character(len=20) cmdString integer(kind=plunicode) fci_old integer ifamily, istyle, iweight real(kind=plflt) dy integer family_index, style_index, weight_index ! Must be big enough to contain the prefix strings, the font-changing ! commands, and the "The quick brown..." string. - character*200 string + character(len=200) string @@ -48,18 +48,18 @@ integer fci_combinations parameter(fci_combinations = 30) - character*5 greek(48) + character(len=5) greek(48) integer type1(166) - character*80 title(11) + character(len=80) title(11) integer lo(11) integer hi(11) integer nxcells(11) integer nycells(11) integer offset(11) integer(kind=plunicode) :: fci(fci_combinations) - character*11 family(5) - character*8 style(3) - character*7 weight(2) + character(len=11) family(5) + character(len=8) style(3) + character(len=7) weight(2) data (greek(i) ,i=1,48) / & '#gA','#gB','#gG','#gD','#gE','#gZ', & Modified: trunk/examples/f95/x24f.f90 =================================================================== --- trunk/examples/f95/x24f.f90 2011-10-19 22:46:13 UTC (rev 11983) +++ trunk/examples/f95/x24f.f90 2011-10-19 23:26:23 UTC (rev 11984) @@ -59,7 +59,7 @@ real(kind=plflt) sx(12) real(kind=plflt) sy(12) - character*30 peace(12) + character(len=30) peace(12) data (red(i) ,i=1,7) / 240, 204, 204, 204, 0, 39, 125 / data (green(i) ,i=1,7) / 240, 0, 125, 204, 204, 80, 0 / Modified: trunk/examples/f95/x26f.f90 =================================================================== --- trunk/examples/f95/x26f.f90 2011-10-19 22:46:13 UTC (rev 11983) +++ trunk/examples/f95/x26f.f90 2011-10-19 23:26:23 UTC (rev 11984) @@ -77,12 +77,12 @@ integer, parameter :: nolangs = 2 integer, parameter :: nlegend = 2 - character*80 x_label(nolangs) - character*80 y_label(nolangs) - character*80 legend_text(2,nolangs) - character*80 alty_label(nolangs) - character*80 title_label(nolangs) - character*80 line_label(nolangs) + character(len=80) x_label(nolangs) + character(len=80) y_label(nolangs) + character(len=80) legend_text(2,nolangs) + character(len=80) alty_label(nolangs) + character(len=80) title_label(nolangs) + character(len=80) line_label(nolangs) integer i, j @@ -159,7 +159,7 @@ integer symbol_numbers(nlegend) integer symbol_colors(nlegend) real(kind=plflt) symbol_scales(nlegend) - character*20 symbols(nlegend) + character(len=20) symbols(nlegend) integer box_colors(0), box_patterns(0), box_line_widths(0) real(kind=plflt) box_scales(0) real(kind=plflt) legend_width, legend_height Modified: trunk/examples/f95/x31f.f90 =================================================================== --- trunk/examples/f95/x31f.f90 2011-10-19 22:46:13 UTC (rev 11983) +++ trunk/examples/f95/x31f.f90 2011-10-19 23:26:23 UTC (rev 11984) @@ -45,7 +45,7 @@ data b1 /0, 0/ real(kind=plflt) a1(2) data a1 /1.0_plflt, 1.0_plflt/ - character*256 fnam + character(len=256) fnam integer stderr integer status This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <arj...@us...> - 2011-11-02 07:46:04
|
Revision: 12023 http://plplot.svn.sourceforge.net/plplot/?rev=12023&view=rev Author: arjenmarkus Date: 2011-11-02 07:45:58 +0000 (Wed, 02 Nov 2011) Log Message: ----------- Added first version of a library of auxiliary routines for use in the examples. This first version only contains arange(), modelled after the Numpy prcoedure by the same name. Note that the examples do not use them yet - some issues with compiling and linking have to be solved before I can actually commit the revised examples. Added Paths: ----------- trunk/examples/f95/plf95demolib.f90 trunk/examples/f95/test_plf95demolib.f90 Added: trunk/examples/f95/plf95demolib.f90 =================================================================== --- trunk/examples/f95/plf95demolib.f90 (rev 0) +++ trunk/examples/f95/plf95demolib.f90 2011-11-02 07:45:58 UTC (rev 12023) @@ -0,0 +1,67 @@ +! $Id: x02f.f90 11984 2011-10-19 23:26:23Z andrewross $ +! Demonstrates multiple windows and color map 0 +! +! Copyright (C) 2011 Arjen Markus +! Copyright (C) 2005 Andrew Ross +! +! This file is part of PLplot. +! +! PLplot is free software; you can redistribute it and/or modify +! it under the terms of the GNU Library General Public License as +! published by the Free Software Foundation; either version 2 of the +! License, or (at your option) any later version. +! +! PLplot is distributed in the hope that it will be useful, +! but WITHOUT ANY WARRANTY; without even the implied warranty of +! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +! GNU Library General Public License for more details. +! +! You should have received a copy of the GNU Library General Public +! License along with PLplot; if not, write to the Free Software +! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + +! Module containing auxiliary routines for the demo programs + +module plf95demolib + use plplot + implicit none + + interface arange + module procedure arange_plflt_1 + module procedure arange_plflt_2 + module procedure arange_plflt_3 + end interface + +contains + +! Function to return an arithmetic series (modelled after the Numpy +! function of the same name) +! +function arange_plflt_1( start, stop, step ) + integer, intent(in) :: start, stop, step + + real(kind=plflt), dimension((stop-start)/step) :: arange_plflt_1 + + integer :: i + + arange_plflt_1 = (/ (real(i, plflt), i = start, stop, step) /) +end function arange_plflt_1 + +function arange_plflt_2( start, stop ) + integer, intent(in) :: start, stop + + real(kind=plflt), dimension((stop-start)) :: arange_plflt_2 + + arange_plflt_2 = arange_plflt_1( start, stop, 1 ) +end function arange_plflt_2 + +function arange_plflt_3( stop ) + integer, intent(in) :: stop + + real(kind=plflt), dimension(stop-1) :: arange_plflt_3 + + arange_plflt_3 = arange_plflt_1( 0, stop, 1 ) +end function arange_plflt_3 + +end module plf95demolib Added: trunk/examples/f95/test_plf95demolib.f90 =================================================================== --- trunk/examples/f95/test_plf95demolib.f90 (rev 0) +++ trunk/examples/f95/test_plf95demolib.f90 2011-11-02 07:45:58 UTC (rev 12023) @@ -0,0 +1,38 @@ +! test_plf95demolib.f90 -- +! Test program for the auxiliary functions +! +program test_plf95demolib + use plf95demolib + + real, dimension(10) :: value + integer :: i + integer, dimension(4) :: start = (/ 0, 0, 1, 2 /), & + stop = (/ 10, 10, 11, 22 /), & + step = (/ 1, 2, 1, 2 /), & + expected_size = & + (/ 10, 5, 10, 10 /) + integer :: sz + + ! Function arange: + ! - Check the length of the returned array + ! - Check the values + ! + do i = 1,size(start) + sz = size( arange( start(i), stop(i), step(i) ) ) + if ( sz /= expected_size(i) ) then + write(*,*) 'Expected:', expected_size(i), ' - got: ', sz + else + value(1:sz) = arange( start(i), stop(i), step(i) ) + write(*,*) value(1:sz) + if ( any( value(1:sz) < start(i) ) ) then + write(*,*) 'Minimum value too low: ', minval(value(1:sz)), ' - expected: ', start(i) + endif + if ( any( value(1:sz) >= stop(i) ) ) then + write(*,*) 'Maximum value too high: ', maxval(value(1:sz)), ' - should be below: ', stop(i) + endif + if ( any( value(2:sz) - value(1:sz-1) /= step(i) ) ) then + write(*,*) 'Difference in subsequent values incorrect: ', value(1:sz), ' - expected difference:', step(i) + endif + endif + enddo +end program This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <arj...@us...> - 2011-11-28 10:01:28
|
Revision: 12061 http://plplot.svn.sourceforge.net/plplot/?rev=12061&view=rev Author: arjenmarkus Date: 2011-11-28 10:01:16 +0000 (Mon, 28 Nov 2011) Log Message: ----------- First few examples adapted to use more Fortran 95 features. Also changed the indentation to 4 spaces (as that is also used in the examples for C and other languages). Correction in the demo library - one element too many in the constructed array. Modified Paths: -------------- trunk/examples/f95/CMakeLists.txt trunk/examples/f95/plf95demolib.f90 trunk/examples/f95/x01f.f90 trunk/examples/f95/x02f.f90 trunk/examples/f95/x03f.f90 trunk/examples/f95/x04f.f90 Modified: trunk/examples/f95/CMakeLists.txt =================================================================== --- trunk/examples/f95/CMakeLists.txt 2011-11-27 20:48:57 UTC (rev 12060) +++ trunk/examples/f95/CMakeLists.txt 2011-11-28 10:01:16 UTC (rev 12061) @@ -61,6 +61,10 @@ ) if(CORE_BUILD) + set(plf95demolib${LIB_TAG}_LIB_SRCS plf95demolib.f90) + + add_library(plf95demolib${LIB_TAG} STATIC ${plf95demolib${LIB_TAG}_LIB_SRCS}) + set(f95_SRCS) foreach(STRING_INDEX ${f95_STRING_INDICES}) set(f95_SRCS ${f95_SRCS} x${STRING_INDEX}f.f90) @@ -125,9 +129,9 @@ OUTPUT_NAME x${STRING_INDEX}f ) if(STATIC_OPTS) - target_link_libraries(x${STRING_INDEX}f95 plplotf95opts${LIB_TAG} plplotf95${LIB_TAG} plplotf95c${LIB_TAG}) + target_link_libraries(x${STRING_INDEX}f95 plf95demolib${LIB_TAG} plplotf95opts${LIB_TAG} plplotf95${LIB_TAG} plplotf95c${LIB_TAG}) else(STATIC_OPTS) - target_link_libraries(x${STRING_INDEX}f95 plplotf95${LIB_TAG} plplotf95c${LIB_TAG}) + target_link_libraries(x${STRING_INDEX}f95 plf95demolib${LIB_TAG} plplotf95${LIB_TAG} plplotf95c${LIB_TAG}) endif(STATIC_OPTS) set_property(GLOBAL APPEND PROPERTY TARGETS_examples_f95 x${STRING_INDEX}f95) endforeach(STRING_INDEX ${f95_STRING_INDICES}) Modified: trunk/examples/f95/plf95demolib.f90 =================================================================== --- trunk/examples/f95/plf95demolib.f90 2011-11-27 20:48:57 UTC (rev 12060) +++ trunk/examples/f95/plf95demolib.f90 2011-11-28 10:01:16 UTC (rev 12061) @@ -20,7 +20,6 @@ ! License along with PLplot; if not, write to the Free Software ! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - ! Module containing auxiliary routines for the demo programs module plf95demolib @@ -45,7 +44,7 @@ integer :: i - arange_plflt_1 = (/ (real(i, plflt), i = start, stop, step) /) + arange_plflt_1 = (/ (real(i, plflt), i = start, stop-step, step) /) end function arange_plflt_1 function arange_plflt_2( start, stop ) Modified: trunk/examples/f95/x01f.f90 =================================================================== --- trunk/examples/f95/x01f.f90 2011-11-27 20:48:57 UTC (rev 12060) +++ trunk/examples/f95/x01f.f90 2011-11-28 10:01:16 UTC (rev 12061) @@ -19,14 +19,15 @@ ! License along with PLplot; if not, write to the Free Software ! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - program x01f95 +program x01f95 use plplot, PI => PL_PI + use plf95demolib implicit none real(plflt) :: xscale, yscale, xoff, yoff - character(len=80) version - integer digmax + character(len=80) :: version + integer :: digmax ! Process command-line arguments call plparseopts(PL_PARSE_FULL) @@ -65,35 +66,28 @@ call plot2() call plot3() + ! Don't forget to call PLEND to finish off! call plend() - contains +contains !====================================================================== - subroutine plot1() +subroutine plot1() real(plflt), dimension(1:60) :: x, y - real(plflt), dimension(1:6) :: xs, ys - real(plflt) :: xmin, xmax, ymin, ymax + real(plflt) :: xmin, xmax, ymin, ymax integer :: i - do i = 1, 60 - x(i) = xoff + xscale * dble(i)/60.0_plflt - y(i) = yoff + yscale * x(i)**2 - enddo + x = xoff + xscale * arange(1,size(x)+1) / real(size(x),plflt) + y = yoff + yscale * x ** 2 - xmin = x(1) - xmax = x(60) - ymin = y(1) - ymax = y(60) + xmin = minval(x) + xmax = maxval(x) + ymin = minval(y) + ymax = maxval(y) - do i = 1, 6 - xs(i) = x((i-1)*10+4) - ys(i) = y((i-1)*10+4) - enddo - ! Set up the viewport and window using PLENV. The range in X is ! 0.0 to 6.0, and the range in Y is 0.0 to 30.0. The axes are ! scaled separately (just = 0), and we just draw a labelled @@ -105,19 +99,20 @@ call pllab( '(x)', '(y)', '#frPLplot Example 1 - y=x#u2' ) ! Plot the data points +! Only plot every tenth! call plcol0(4) - call plpoin( xs, ys, 9 ) + call plpoin( x(4::10), y(4::10), 9 ) ! Draw the line through the data call plcol0(3) call plline( x, y ) - end subroutine plot1 +end subroutine plot1 !====================================================================== - subroutine plot2() +subroutine plot2() real(plflt), dimension(1:100) :: x, y integer :: i @@ -135,12 +130,10 @@ ! Fill up the arrays - do i = 1, 100 - x(i) = (i-20.0_plflt)/6.0_plflt - y(i) = 1.0_plflt - if (x(i) .ne. 0.0_plflt) y(i) = sin(x(i)) / x(i) - enddo + x = ( arange(size(x)) - 19 ) / 6.0_plflt + y = merge( sin(x) / x, 1.0_plflt, x /= 0.0_plflt ) + ! Draw the line call plcol0(3) @@ -148,7 +141,7 @@ call plline( x, y ) call plwid(1) - end subroutine plot2 +end subroutine plot2 !====================================================================== subroutine plot3() @@ -158,8 +151,8 @@ ! and so do not use_ PLENV real(plflt), dimension(1:101) :: x, y + integer :: i - integer i call pladv(0) ! Use_ standard viewport, and define X range from 0 to 360 degrees, @@ -184,14 +177,12 @@ call plcol0(3) call pllab( 'Angle (degrees)', 'sine', '#frPLplot Example 1 - Sine function' ) - do i = 1, 101 - x(i) = 3.6_plflt * (i-1) - y(i) = sin( x(i) * PI/180.0_plflt ) - enddo + x = 3.6_plflt * arange(size(x)) + y = sin( x * PI/180.0_plflt ) call plcol0(4) call plline( x, y ) - end subroutine plot3 +end subroutine plot3 - end program x01f95 +end program x01f95 Modified: trunk/examples/f95/x02f.f90 =================================================================== --- trunk/examples/f95/x02f.f90 2011-11-27 20:48:57 UTC (rev 12060) +++ trunk/examples/f95/x02f.f90 2011-11-28 10:01:16 UTC (rev 12061) @@ -1,156 +1,147 @@ -! $Id$ -! Demonstrates multiple windows and color map 0 +! $Id$ +! Demonstrates multiple windows and color map 0 ! -! Copyright (C) 2004 Alan W. Irwin -! Copyright (C) 2005 Andrew Ross +! Copyright (C) 2004 Alan W. Irwin +! Copyright (C) 2005 Andrew Ross ! -! This file is part of PLplot. +! This file is part of PLplot. ! -! PLplot is free software; you can redistribute it and/or modify -! it under the terms of the GNU Library General Public License as -! published by the Free Software Foundation; either version 2 of the -! License, or (at your option) any later version. +! PLplot is free software; you can redistribute it and/or modify +! it under the terms of the GNU Library General Public License as +! published by the Free Software Foundation; either version 2 of the +! License, or (at your option) any later version. ! -! PLplot is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Library General Public License for more details. +! PLplot is distributed in the hope that it will be useful, +! but WITHOUT ANY WARRANTY; without even the implied warranty of +! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +! GNU Library General Public License for more details. ! -! You should have received a copy of the GNU Library General Public -! License along with PLplot; if not, write to the Free Software -! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +! You should have received a copy of the GNU Library General Public +! License along with PLplot; if not, write to the Free Software +! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - use plplot - implicit none +program x02f95 + use plplot + implicit none -! Process command-line arguments - call plparseopts(PL_PARSE_FULL) +! Process command-line arguments + call plparseopts(PL_PARSE_FULL) -! Initialize plplot - call plinit() +! Initialize plplot + call plinit() -! Run demos - call demo1 - call demo2 +! Run demos + call demo1 + call demo2 - call plend + call plend - end +contains - !-------------------------------------------------------------------------- ! demo1 ! ! Demonstrates multiple windows and default color map 0 palette. !-------------------------------------------------------------------------- - subroutine demo1 - use plplot - implicit none - - call plbop +subroutine demo1 -! Divide screen into 16 regions - call plssub(4,4) + call plbop - call draw_windows(16, 0) +! Divide screen into 16 regions + call plssub(4,4) - call pleop + call draw_windows(16, 0) - end + call pleop +end subroutine demo1 + !-------------------------------------------------------------------------- ! demo2 ! ! Demonstrates multiple windows, user-modified color map 0 palette, -! and HLS -> RGB translation. +! and HLS -> RGB translation. !-------------------------------------------------------------------------- - subroutine demo2 - use plplot - implicit none - integer r(116), g(116), b(116) - real(kind=plflt) lmin, lmax - parameter (lmin = 0.15_plflt, lmax = 0.85_plflt) - integer i - real(kind=plflt) h, l, s, r1, g1, b1 +subroutine demo2 + integer, parameter :: tablesize = 116 + integer, dimension(tablesize) :: r, g, b + integer :: i - call plbop + real(kind=plflt), parameter :: lmin = 0.15_plflt, lmax = 0.85_plflt + real(kind=plflt) h, l, s, r1, g1, b1 -! Divide screen into 100 regions - call plssub(10,10) + call plbop +! Divide screen into 100 regions + call plssub(10,10) - do i=0,99 -! Bounds on HLS, from plhlsrgb() commentary -- -! hue [0., 360.] degrees -! lightness [0., 1.] magnitude -! saturation [0., 1.] magnitude + do i=0,99 +! Bounds on HLS, from plhlsrgb() commentary -- +! hue [0., 360.] degrees +! lightness [0., 1.] magnitude +! saturation [0., 1.] magnitude -! Vary hue uniformly from left to right - h = (360._plflt/10._plflt)*mod(i,10) -! Vary lightness uniformly from top to bottom, between min and max - l = lmin + (lmax - lmin) * (i / 10) / 9._plflt -! Use_ max saturation - s = 1._plflt +! Vary hue uniformly from left to right + h = (360._plflt/10._plflt)*mod(i,10) +! Vary lightness uniformly from top to bottom, between min and max + l = lmin + (lmax - lmin) * (i / 10) / 9._plflt +! Use_ max saturation + s = 1._plflt - call plhlsrgb(h, l, s, r1, g1, b1) - - r(i+17) = r1*255.001 - g(i+17) = g1*255.001 - b(i+17) = b1*255.001 - enddo + call plhlsrgb(h, l, s, r1, g1, b1) - do i=1,16 - call plgcol0(i-1,r(i),g(i),b(i)) - enddo + r(i+17) = r1*255.001 + g(i+17) = g1*255.001 + b(i+17) = b1*255.001 + enddo - call plscmap0(r, g, b) + do i=1,16 + call plgcol0(i-1,r(i),g(i),b(i)) + enddo - call draw_windows(100, 16) + call plscmap0(r, g, b) - call pleop + call draw_windows(100, 16) - end + call pleop +end subroutine demo2 + !-------------------------------------------------------------------------- ! draw_windows ! ! Draws a set of numbered boxes with colors according to cmap0 entry. !-------------------------------------------------------------------------- - subroutine draw_windows( nw, cmap0_offset ) - use plplot - implicit none - integer :: nw, cmap0_offset - integer :: i,j - real(kind=plflt) :: vmin, vmax - character (len=3) :: text - - - call plschr(0.0_plflt, 3.5_plflt) - call plfont(4) +subroutine draw_windows( nw, cmap0_offset ) - do i=0,nw-1 + integer :: nw, cmap0_offset + integer :: i,j + real(kind=plflt) :: vmin, vmax + character (len=3) :: text + + call plschr(0.0_plflt, 3.5_plflt) + call plfont(4) + + do i=0,nw-1 call plcol0(i+cmap0_offset) - write (text,'(i3)') i - if (i .lt. 10) then - text=text(3:3) - elseif (i.lt.100) then - text=text(2:3) - endif + write (text,'(i0)') i + call pladv(0) vmin = 0.1_plflt vmax = 0.9_plflt do j=1,3 - call plwid(j) - call plvpor(vmin,vmax,vmin,vmax) - call plwind(0.0_plflt, 1.0_plflt, 0.0_plflt, 1.0_plflt) - call plbox('bc', 0.0_plflt, 0, 'bc', 0.0_plflt, 0) - vmin = vmin + 0.1_plflt - vmax = vmax - 0.1_plflt + call plwid(j) + call plvpor(vmin,vmax,vmin,vmax) + call plwind(0.0_plflt, 1.0_plflt, 0.0_plflt, 1.0_plflt) + call plbox('bc', 0.0_plflt, 0, 'bc', 0.0_plflt, 0) + vmin = vmin + 0.1_plflt + vmax = vmax - 0.1_plflt enddo call plwid(1) call plptex(0.5_plflt, 0.5_plflt, 1.0_plflt, 0.0_plflt, 0.5_plflt, text) - enddo + enddo - end +end subroutine draw_windows +end program x02f95 Modified: trunk/examples/f95/x03f.f90 =================================================================== --- trunk/examples/f95/x03f.f90 2011-11-27 20:48:57 UTC (rev 12060) +++ trunk/examples/f95/x03f.f90 2011-11-28 10:01:16 UTC (rev 12061) @@ -1,118 +1,99 @@ -! $Id$ -! Generates polar plot with, 1-1 scaling +! $Id$ +! Generates polar plot with, 1-1 scaling ! -! Copyright (C) 2004 Alan W. Irwin +! Copyright (C) 2004 Alan W. Irwin ! -! This file is part of PLplot. +! This file is part of PLplot. ! -! PLplot is free software; you can redistribute it and/or modify -! it under the terms of the GNU Library General Public License as -! published by the Free Software Foundation; either version 2 of the -! License, or (at your option) any later version. +! PLplot is free software; you can redistribute it and/or modify +! it under the terms of the GNU Library General Public License as +! published by the Free Software Foundation; either version 2 of the +! License, or (at your option) any later version. ! -! PLplot is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Library General Public License for more details. +! PLplot is distributed in the hope that it will be useful, +! but WITHOUT ANY WARRANTY; without even the implied warranty of +! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +! GNU Library General Public License for more details. ! -! You should have received a copy of the GNU Library General Public -! License along with PLplot; if not, write to the Free Software -! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +! You should have received a copy of the GNU Library General Public +! License along with PLplot; if not, write to the Free Software +! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - use plplot, PI => PL_PI - implicit none +program x03f95 + use plplot, PI => PL_PI + use plf95demolib + implicit none - character (len=3) :: text - real(kind=plflt), dimension(0:360) :: x0, y0, x, y - real(kind=plflt) :: dtr, theta, dx, dy, r, offset - integer :: i, nsp -! Process command-line arguments - call plparseopts(PL_PARSE_FULL) + character (len=3) :: text + real(kind=plflt), dimension(0:360) :: x0, y0, x, y + real(kind=plflt) :: dtr, theta, dx, dy, r, offset + integer :: i, nsp +! Process command-line arguments + call plparseopts(PL_PARSE_FULL) -! Set orientation to portrait - note not all device drivers -! support this, in particular most interactive drivers do not. - call plsori(1) +! Set orientation to portrait - note not all device drivers +! support this, in particular most interactive drivers do not. + call plsori(1) - dtr = PI/180.0_plflt - do i=0,360 - x0(i) = cos(dtr * dble (i)) - y0(i) = sin(dtr * dble (i)) - enddo + dtr = PI/180.0_plflt + x0 = cos(dtr * arange(0,361)) + y0 = sin(dtr * arange(0,361)) -! Initialize PLplot +! Initialize PLplot - call plinit() + call plinit() -! Set up viewport and window, but do not draw box +! Set up viewport and window, but do not draw box - call plenv(-1.3_plflt, 1.3_plflt, -1.3_plflt, 1.3_plflt, 1, -2) -! Draw circles for polar grid - do i = 1,10 - call plarc(0.0_plflt, 0.0_plflt, 0.1_plflt*i, 0.1_plflt*i, & - 0.0_plflt, 360.0_plflt, 0.0_plflt, 0) - enddo - call plcol0(2) - do i = 0,11 - theta = 30.0_plflt*i - dx = cos(dtr*theta) - dy = sin(dtr*theta) + call plenv(-1.3_plflt, 1.3_plflt, -1.3_plflt, 1.3_plflt, 1, -2) +! Draw circles for polar grid + do i = 1,10 + call plarc(0.0_plflt, 0.0_plflt, 0.1_plflt*i, 0.1_plflt*i, & + 0.0_plflt, 360.0_plflt, 0.0_plflt, 0) + enddo + call plcol0(2) + do i = 0,11 + theta = 30.0_plflt*i + dx = cos(dtr*theta) + dy = sin(dtr*theta) -! Draw radial spokes for polar grid +! Draw radial spokes for polar grid - call pljoin(0.0_plflt, 0.0_plflt, dx, dy) - write (text,'(i3)') nint(theta) + call pljoin(0.0_plflt, 0.0_plflt, dx, dy) + write (text,'(i3)') nint(theta) -! Write labels for angle +! Write labels for angle - text = text(nsp(text):) + text = adjustl(text) - if (theta .lt. 9.99) then - offset = 0.45 - elseif (theta .lt. 99.9) then - offset = 0.30 - else - offset = 0.15 - endif -! Slightly off zero to avoid floating point logic flips at -! 90 and 270 deg. - if (dx.ge.-0.00001_plflt) then - call plptex(dx, dy, dx, dy, -offset, text) - else - call plptex(dx, dy, -dx, -dy, 1._plflt+offset, text) - end if - enddo -! Draw the graph + if (theta .lt. 9.99) then + offset = 0.45 + elseif (theta .lt. 99.9) then + offset = 0.30 + else + offset = 0.15 + endif +! Slightly off zero to avoid floating point logic flips at +! 90 and 270 deg. + if (dx >= -0.00001_plflt) then + call plptex(dx, dy, dx, dy, -offset, text) + else + call plptex(dx, dy, -dx, -dy, 1._plflt+offset, text) + end if + enddo +! Draw the graph - do i=0,360 - r = sin(dtr*dble (5*i)) - x(i) = x0(i) * r - y(i) = y0(i) * r - enddo - call plcol0(3) - call plline(x,y) + x = x0 * sin(5.0_plflt * dtr * arange(0,361)) + y = y0 * sin(5.0_plflt * dtr * arange(0,361)) - call plcol0(4) - call plmtex('t', 2.0_plflt, 0.5_plflt, 0.5_plflt, & - '#frPLplot Example 3 - r(#gh)=sin 5#gh') + call plcol0(3) + call plline(x,y) -! Close the plot at end + call plcol0(4) + call plmtex('t', 2.0_plflt, 0.5_plflt, 0.5_plflt, & + '#frPLplot Example 3 - r(#gh)=sin 5#gh') - call plend - end +! Close the plot at end - integer function nsp(text) -! ================== - -! Find first non-space character - use plplot - implicit none - - character*(*) text - integer l, len - - l = len(text) - nsp = 1 - do while(text(nsp:nsp).eq.' ' .and. nsp.lt.l) - nsp = nsp+1 - enddo - end + call plend +end program x03f95 Modified: trunk/examples/f95/x04f.f90 =================================================================== --- trunk/examples/f95/x04f.f90 2011-11-27 20:48:57 UTC (rev 12060) +++ trunk/examples/f95/x04f.f90 2011-11-28 10:01:16 UTC (rev 12061) @@ -1,140 +1,148 @@ -! $Id$ -! Illustration of logarithmic axes, and redefinition of window +! $Id$ +! Illustration of logarithmic axes, and redefinition of window ! -! Copyright (C) 2004 Alan W. Irwin +! Copyright (C) 2004 Alan W. Irwin ! -! This file is part of PLplot. +! This file is part of PLplot. ! -! PLplot is free software; you can redistribute it and/or modify -! it under the terms of the GNU Library General Public License as -! published by the Free Software Foundation; either version 2 of the -! License, or (at your option) any later version. +! PLplot is free software; you can redistribute it and/or modify +! it under the terms of the GNU Library General Public License as +! published by the Free Software Foundation; either version 2 of the +! License, or (at your option) any later version. ! -! PLplot is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Library General Public License for more details. +! PLplot is distributed in the hope that it will be useful, +! but WITHOUT ANY WARRANTY; without even the implied warranty of +! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +! GNU Library General Public License for more details. ! -! You should have received a copy of the GNU Library General Public -! License along with PLplot; if not, write to the Free Software -! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +! You should have received a copy of the GNU Library General Public +! License along with PLplot; if not, write to the Free Software +! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - use plplot - implicit none +program x04f95 + use plplot, PI => PL_PI + use plf95demolib + implicit none -! Process command-line arguments - call plparseopts(PL_PARSE_FULL) + real(kind=plflt) :: freql(0:100),ampl(0:100),phase(0:100) - call plinit - call plfont(2) -! Make log plots using two different styles. - call plot1(0) - call plot1(1) - call plend - end +! Process command-line arguments + call plparseopts(PL_PARSE_FULL) - subroutine plot1(type) - use plplot, PI => PL_PI - implicit none - real(kind=plflt) freql(0:100),ampl(0:100),phase(0:100), freq, f0 - integer i, type - integer nlegend + call plinit + call plfont(2) +! Make log plots using two different styles. + call plot1(0) + call plot1(1) + call plend +contains - real(kind=plflt) legend_width, legend_height - integer opt_array(2), text_colors(2), line_colors(2), & - line_styles(2), line_widths(2), symbol_colors(2), & - symbol_numbers(2) - real(kind=plflt) symbol_scales(2), box_scales(0) - integer box_colors(0), box_patterns(0) - integer box_line_widths(0) - character(len=20) text(2) - character(len=1) symbols(2) +subroutine plot1(type) + integer :: i, type + integer :: nlegend - call pladv(0) -! Set up data for log plot. - f0 = 1._plflt - do i=0,100 - freql(i)= -2.0_plflt + dble (i)/20.0_plflt - freq=10.0_plflt**freql(i) - ampl(i)=20.0_plflt*log10(1.0_plflt/sqrt(1.0_plflt+(freq/f0)**2)) - phase(i)=-(180.0_plflt/PI)*atan(freq/f0) - enddo - call plvpor(0.15_plflt, 0.85_plflt, 0.1_plflt, 0.9_plflt) - call plwind(-2.0_plflt, 3.0_plflt, -80.0_plflt, 0.0_plflt) + real(kind=plflt) :: legend_width, legend_height + integer :: opt_array(2), text_colors(2), line_colors(2), & + line_styles(2), line_widths(2), symbol_colors(2), & + symbol_numbers(2) + real(kind=plflt) :: symbol_scales(2), box_scales(0) + integer :: box_colors(0), box_patterns(0) + integer :: box_line_widths(0) + character(len=20) :: text(2) + character(len=1) :: symbols(2) + + call pladv(0) +! Set up data for log plot. + call setdata + + call plvpor(0.15_plflt, 0.85_plflt, 0.1_plflt, 0.9_plflt) + call plwind(-2.0_plflt, 3.0_plflt, -80.0_plflt, 0.0_plflt) + call plcol0(1) +! Try different axis and labelling styles. + if (type.eq.0) then + call plbox('bclnst', 0.0_plflt, 0, 'bnstv', 0.0_plflt, 0) + elseif (type.eq.1) then + call plbox('bcfghlnst', 0.0_plflt, 0, 'bcghnstv', 0.0_plflt, 0) + else + stop 'plot1: invalid type' + endif +! Plot ampl vs freq. + call plcol0(2) + call plline(freql,ampl) + call plcol0(2) + call plptex(1.6_plflt, -30.0_plflt, 1.0_plflt, -20.0_plflt, 0.5_plflt, & + '-20 dB/decade') +! Put labels on. + call plcol0(1) + call plmtex('b', 3.2_plflt, 0.5_plflt, 0.5_plflt, 'Frequency') + call plmtex('t', 2.0_plflt, 0.5_plflt, 0.5_plflt, & + 'Single Pole Low-Pass Filter') + call plcol0(2) + call plmtex('l', 5.0_plflt, 0.5_plflt, 0.5_plflt, 'Amplitude (dB)') + nlegend = 1 +! For the gridless case, put phase vs freq on same plot. + if(type == 0) then call plcol0(1) -! Try different axis and labelling styles. - if (type.eq.0) then - call plbox('bclnst', 0.0_plflt, 0, 'bnstv', 0.0_plflt, 0) - elseif (type.eq.1) then - call plbox('bcfghlnst', 0.0_plflt, 0, 'bcghnstv', 0.0_plflt, 0) - else - stop 'plot1: invalid type' - endif -! Plot ampl vs freq. - call plcol0(2) - call plline(freql,ampl) - call plcol0(2) - call plptex(1.6_plflt, -30.0_plflt, 1.0_plflt, -20.0_plflt, 0.5_plflt, & - '-20 dB/decade') -! Put labels on. - call plcol0(1) - call plmtex('b', 3.2_plflt, 0.5_plflt, 0.5_plflt, 'Frequency') - call plmtex('t', 2.0_plflt, 0.5_plflt, 0.5_plflt, & - 'Single Pole Low-Pass Filter') - call plcol0(2) - call plmtex('l', 5.0_plflt, 0.5_plflt, 0.5_plflt, 'Amplitude (dB)') - nlegend = 1 -! For the gridless case, put phase vs freq on same plot. - if(type.eq.0) then - call plcol0(1) - call plwind(-2.0_plflt, 3.0_plflt, -100.0_plflt, 0.0_plflt) - call plbox(' ', 0.0_plflt, 0, 'cmstv', 30.0_plflt, 3) - call plcol0(3) - call plline(freql, phase) - call plstring(freql, phase, '*') - call plcol0(3) - call plmtex('r', 5.0_plflt, 0.5_plflt, 0.5_plflt, & - 'Phase shift (degrees)') - nlegend = 2 - endif + call plwind(-2.0_plflt, 3.0_plflt, -100.0_plflt, 0.0_plflt) + call plbox(' ', 0.0_plflt, 0, 'cmstv', 30.0_plflt, 3) + call plcol0(3) + call plline(freql, phase) + call plstring(freql, phase, '*') + call plcol0(3) + call plmtex('r', 5.0_plflt, 0.5_plflt, 0.5_plflt, & + 'Phase shift (degrees)') + nlegend = 2 + endif -! Draw a legend -! First legend entry. - opt_array(1) = PL_LEGEND_LINE - text_colors(1) = 2 - text(1) = 'Amplitude' - line_colors(1) = 2 - line_styles(1) = 1 - line_widths(1) = 1 -! note from the above opt_array the first symbol (and box) indices -! do not have to be specified +! Draw a legend +! First legend entry. + opt_array(1) = PL_LEGEND_LINE + text_colors(1) = 2 + text(1) = 'Amplitude' + line_colors(1) = 2 + line_styles(1) = 1 + line_widths(1) = 1 +! note from the above opt_array the first symbol (and box) indices +! do not have to be specified -! Second legend entry. - opt_array(2) = PL_LEGEND_LINE + PL_LEGEND_SYMBOL - text_colors(2) = 3 - text(2) = 'Phase shift' - line_colors(2) = 3 - line_styles(2) = 1 - line_widths(2) = 1 - symbol_colors(2) = 3 - symbol_scales(2) = 1.0 - symbol_numbers(2) = 4 - symbols(2) = '*' +! Second legend entry. + opt_array(2) = PL_LEGEND_LINE + PL_LEGEND_SYMBOL + text_colors(2) = 3 + text(2) = 'Phase shift' + line_colors(2) = 3 + line_styles(2) = 1 + line_widths(2) = 1 + symbol_colors(2) = 3 + symbol_scales(2) = 1.0 + symbol_numbers(2) = 4 + symbols(2) = '*' -! from the above opt_arrays we can completely ignore everything -! to do with boxes. (Hence the size 0 for the associated arrays) -! (note: use the argument nlegend explicitly) +! from the above opt_arrays we can completely ignore everything +! to do with boxes. (Hence the size 0 for the associated arrays) +! (note: use the argument nlegend explicitly) - call plscol0a( 15, 32, 32, 32, 0.70_plflt ) - call pllegend( legend_width, legend_height, & - PL_LEGEND_BACKGROUND + PL_LEGEND_BOUNDING_BOX, 0, & - 0.0_plflt, 0.0_plflt, 0.1_plflt, 15, & - 1, 1, 0, 0, & - nlegend, opt_array, & - 1.0_plflt, 1.0_plflt, 2.0_plflt, & - 1.0_plflt, text_colors, text, & - box_colors, box_patterns, box_scales, box_line_widths, & - line_colors, line_styles, line_widths, & - symbol_colors, symbol_scales, symbol_numbers, symbols ) + call plscol0a( 15, 32, 32, 32, 0.70_plflt ) + call pllegend( legend_width, legend_height, & + PL_LEGEND_BACKGROUND + PL_LEGEND_BOUNDING_BOX, 0, & + 0.0_plflt, 0.0_plflt, 0.1_plflt, 15, & + 1, 1, 0, 0, & + nlegend, opt_array, & + 1.0_plflt, 1.0_plflt, 2.0_plflt, & + 1.0_plflt, text_colors, text, & + box_colors, box_patterns, box_scales, box_line_widths, & + line_colors, line_styles, line_widths, & + symbol_colors, symbol_scales, symbol_numbers, symbols ) +end subroutine plot1 - end +subroutine setdata + real(kind=plflt), dimension(lbound(freql,1):ubound(freql,1)) :: freq + real(kind=plflt) :: f0 + + f0 = 1._plflt + + freql = -2.0_plflt + arange(lbound(freql,1),ubound(freql,1)+1) / 20.0_plflt + freq = 10.0_plflt ** freql + ampl = 20.0_plflt * log10(1.0_plflt/sqrt(1.0_plflt+(freq/f0)**2)) + phase = -(180.0_plflt/PI)*atan(freq/f0) +end subroutine setdata +end program x04f95 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2011-11-30 02:02:38
|
Revision: 12071 http://plplot.svn.sourceforge.net/plplot/?rev=12071&view=rev Author: airwin Date: 2011-11-30 02:02:32 +0000 (Wed, 30 Nov 2011) Log Message: ----------- Update build system so that the plf95demolib library works properly in the build tree, the installed examples built and tested with our CMake-based build system and the installed examples built and tested with the traditional Makefile + pkg-config approach. For now I have chosen the approach of installing the library and module in the standard places, but it might be better to install those in $prefix/share/plplot5.?.?/examples/f95 since they are designed to be completely specific with regard to our Fortran 95 examples. I have also chosen to link to the new plf95demolib library outside the pkg-config system for our traditional build of the installed f95 examples by configuring the Makefile appropriately. Modified Paths: -------------- trunk/examples/f95/CMakeLists.txt trunk/examples/f95/Makefile.examples.in Modified: trunk/examples/f95/CMakeLists.txt =================================================================== --- trunk/examples/f95/CMakeLists.txt 2011-11-30 00:45:32 UTC (rev 12070) +++ trunk/examples/f95/CMakeLists.txt 2011-11-30 02:02:32 UTC (rev 12071) @@ -61,10 +61,30 @@ ) if(CORE_BUILD) + # For CMake-2.6.0 and above, the module files are created by + # default during the library build in the bindings/f95 directory. + include_directories(${CMAKE_BINARY_DIR}/bindings/f95) +else(CORE_BUILD) + include_directories(${INCLUDE_DIR} ${F95_MOD_DIR}) +endif(CORE_BUILD) + +if(CORE_BUILD) set(plf95demolib${LIB_TAG}_LIB_SRCS plf95demolib.f90) add_library(plf95demolib${LIB_TAG} STATIC ${plf95demolib${LIB_TAG}_LIB_SRCS}) + target_link_libraries(plf95demolib${LIB_TAG} plplotf95${LIB_TAG}) + install(TARGETS plf95demolib${LIB_TAG} + EXPORT export_plplot + ARCHIVE DESTINATION ${LIB_DIR} + LIBRARY DESTINATION ${LIB_DIR} + RUNTIME DESTINATION ${BIN_DIR} + ) + install(FILES + ${CMAKE_BINARY_DIR}/examples/f95/plf95demolib.mod + DESTINATION ${F95_MOD_DIR} + ) + set(f95_SRCS) foreach(STRING_INDEX ${f95_STRING_INDICES}) set(f95_SRCS ${f95_SRCS} x${STRING_INDEX}f.f90) @@ -111,15 +131,7 @@ endif(CORE_BUILD) if(BUILD_TEST) - if(CORE_BUILD) - # For CMake-2.6.0 and above, the module files are created by - # default during the library build in the bindings/f95 directory. - include_directories(${CMAKE_BINARY_DIR}/bindings/f95) - else(CORE_BUILD) - include_directories(${INCLUDE_DIR} ${F95_MOD_DIR}) - endif(CORE_BUILD) - set_property(GLOBAL PROPERTY TARGETS_examples_f95) foreach(STRING_INDEX ${f95_STRING_INDICES}) # Need unique target name @@ -136,4 +148,3 @@ set_property(GLOBAL APPEND PROPERTY TARGETS_examples_f95 x${STRING_INDEX}f95) endforeach(STRING_INDEX ${f95_STRING_INDICES}) endif(BUILD_TEST) - Modified: trunk/examples/f95/Makefile.examples.in =================================================================== --- trunk/examples/f95/Makefile.examples.in 2011-11-30 00:45:32 UTC (rev 12070) +++ trunk/examples/f95/Makefile.examples.in 2011-11-30 02:02:32 UTC (rev 12071) @@ -69,7 +69,7 @@ rm -f $(EXECUTABLES_list) .f90$(EXEEXT): -@pkg_config_true@ $(F95) @MODULESINCCMD@ $< -o $@ $(RPATHCMD) `$(PKG_CONFIG_ENV) pkg-config @PC_STATIC_OPTION@ --cflags --libs plplot$(LIB_TAG)-f95` +@pkg_config_true@ $(F95) @MODULESINCCMD@ $< -o $@ $(RPATHCMD) `$(PKG_CONFIG_ENV) pkg-config @PC_STATIC_OPTION@ --cflags --libs plplot$(LIB_TAG)-f95` -lplf95demolib$(LIB_TAG) @pkg_config_false@ $(F95) @MODULESINCCMD@ $< -o $@ `plplot-config --cflags --libs --with-f95` .SUFFIXES: .f90 $(EXEEXT) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2011-12-02 13:21:20
|
Revision: 12091 http://plplot.svn.sourceforge.net/plplot/?rev=12091&view=rev Author: andrewross Date: 2011-12-02 13:21:14 +0000 (Fri, 02 Dec 2011) Log Message: ----------- Fix up two minor compiler warnings in fortran 95 examples Modified Paths: -------------- trunk/examples/f95/x04f.f90 trunk/examples/f95/x13f.f90 Modified: trunk/examples/f95/x04f.f90 =================================================================== --- trunk/examples/f95/x04f.f90 2011-12-02 13:19:39 UTC (rev 12090) +++ trunk/examples/f95/x04f.f90 2011-12-02 13:21:14 UTC (rev 12091) @@ -38,7 +38,7 @@ contains subroutine plot1(type) - integer :: i, type + integer :: type integer :: nlegend real(kind=plflt) :: legend_width, legend_height Modified: trunk/examples/f95/x13f.f90 =================================================================== --- trunk/examples/f95/x13f.f90 2011-12-02 13:19:39 UTC (rev 12090) +++ trunk/examples/f95/x13f.f90 2011-12-02 13:21:14 UTC (rev 12091) @@ -59,7 +59,7 @@ j = j + 1 ! n.b. the theta quantities multiplied by 2*pi/500 afterward so ! in fact per is interpreted as a percentage. - theta1 = theta0 + 5*per(i+1) + theta1 = int(theta0 + 5*per(i+1)) if (i .eq. 4) theta1 = 500 do theta = theta0, theta1, dthet x(j+1) = 5 + 3*cos((2._plflt*pi/500._plflt)*theta) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2011-12-03 08:35:59
|
Revision: 12094 http://plplot.svn.sourceforge.net/plplot/?rev=12094&view=rev Author: andrewross Date: 2011-12-03 08:35:52 +0000 (Sat, 03 Dec 2011) Log Message: ----------- Fix up some compiler warnings (unused variables and type conversions) for f95 examples. Modified Paths: -------------- trunk/examples/f95/x01f.f90 trunk/examples/f95/x02f.f90 trunk/examples/f95/x03f.f90 Modified: trunk/examples/f95/x01f.f90 =================================================================== --- trunk/examples/f95/x01f.f90 2011-12-03 08:33:04 UTC (rev 12093) +++ trunk/examples/f95/x01f.f90 2011-12-03 08:35:52 UTC (rev 12094) @@ -78,7 +78,6 @@ real(plflt), dimension(1:60) :: x, y real(plflt) :: xmin, xmax, ymin, ymax - integer :: i x = xoff + xscale * arange(1,size(x)+1) / real(size(x),plflt) y = yoff + yscale * x ** 2 @@ -115,7 +114,6 @@ subroutine plot2() real(plflt), dimension(1:100) :: x, y - integer :: i ! ! Set up the viewport and window using PLENV. The range in X is @@ -151,7 +149,6 @@ ! and so do not use_ PLENV real(plflt), dimension(1:101) :: x, y - integer :: i call pladv(0) Modified: trunk/examples/f95/x02f.f90 =================================================================== --- trunk/examples/f95/x02f.f90 2011-12-03 08:33:04 UTC (rev 12093) +++ trunk/examples/f95/x02f.f90 2011-12-03 08:35:52 UTC (rev 12094) @@ -92,9 +92,9 @@ call plhlsrgb(h, l, s, r1, g1, b1) - r(i+17) = r1*255.001 - g(i+17) = g1*255.001 - b(i+17) = b1*255.001 + r(i+17) = int(r1*255.001) + g(i+17) = int(g1*255.001) + b(i+17) = int(b1*255.001) enddo do i=1,16 Modified: trunk/examples/f95/x03f.f90 =================================================================== --- trunk/examples/f95/x03f.f90 2011-12-03 08:33:04 UTC (rev 12093) +++ trunk/examples/f95/x03f.f90 2011-12-03 08:35:52 UTC (rev 12094) @@ -26,8 +26,8 @@ character (len=3) :: text real(kind=plflt), dimension(0:360) :: x0, y0, x, y - real(kind=plflt) :: dtr, theta, dx, dy, r, offset - integer :: i, nsp + real(kind=plflt) :: dtr, theta, dx, dy, offset + integer :: i ! Process command-line arguments call plparseopts(PL_PARSE_FULL) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <arj...@us...> - 2011-12-07 08:56:40
|
Revision: 12097 http://plplot.svn.sourceforge.net/plplot/?rev=12097&view=rev Author: arjenmarkus Date: 2011-12-07 08:56:34 +0000 (Wed, 07 Dec 2011) Log Message: ----------- Adjusting the formatting of two more examples. Use the auxiliary arange() function in x06f.f90. Modified Paths: -------------- trunk/examples/f95/x05f.f90 trunk/examples/f95/x06f.f90 Modified: trunk/examples/f95/x05f.f90 =================================================================== --- trunk/examples/f95/x05f.f90 2011-12-03 21:11:14 UTC (rev 12096) +++ trunk/examples/f95/x05f.f90 2011-12-07 08:56:34 UTC (rev 12097) @@ -1,48 +1,47 @@ -! $Id$ -! Draws a histogram from sample data +! $Id$ +! Draws a histogram from sample data ! -! Copyright (C) 2004 Alan W. Irwin +! Copyright (C) 2004 Alan W. Irwin ! -! This file is part of PLplot. +! This file is part of PLplot. ! -! PLplot is free software; you can redistribute it and/or modify -! it under the terms of the GNU Library General Public License as -! published by the Free Software Foundation; either version 2 of the -! License, or (at your option) any later version. +! PLplot is free software; you can redistribute it and/or modify +! it under the terms of the GNU Library General Public License as +! published by the Free Software Foundation; either version 2 of the +! License, or (at your option) any later version. ! -! PLplot is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Library General Public License for more details. +! PLplot is distributed in the hope that it will be useful, +! but WITHOUT ANY WARRANTY; without even the implied warranty of +! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +! GNU Library General Public License for more details. ! -! You should have received a copy of the GNU Library General Public -! License along with PLplot; if not, write to the Free Software -! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +! You should have received a copy of the GNU Library General Public +! License along with PLplot; if not, write to the Free Software +! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - use plplot, PI => PL_PI - implicit none +program x04f95 + use plplot, PI => PL_PI + use plf95demolib + implicit none - integer i - integer NPTS - parameter ( NPTS = 2047 ) - real(kind=plflt) data(NPTS), delta -! Process command-line arguments - call plparseopts(PL_PARSE_FULL) + integer, parameter :: NPTS = 2047 + real(kind=plflt) :: data(NPTS), delta -! Initialize plplot - call plinit() -! Fill up data points +! Process command-line arguments + call plparseopts(PL_PARSE_FULL) - delta = 2.0_plflt * PI / dble (NPTS) - do i=1,NPTS - data(i)=sin(delta*dble (i-1)) - enddo +! Initialize plplot + call plinit() - call plcol0(1) - call plhist(data, -1.1_plflt, 1.1_plflt, 44, 0) - call plcol0(2) - call pllab('#frValue','#frFrequency', & - '#frPLplot Example 5 - Probability function of Oscillator') +! Fill up data points + delta = 2.0_plflt * PI / dble (NPTS) + data = sin(delta*arange(0, NPTS)) - call plend - end + call plcol0(1) + call plhist(data, -1.1_plflt, 1.1_plflt, 44, 0) + call plcol0(2) + call pllab('#frValue','#frFrequency', & + '#frPLplot Example 5 - Probability function of Oscillator') + + call plend +end program x04f95 Modified: trunk/examples/f95/x06f.f90 =================================================================== --- trunk/examples/f95/x06f.f90 2011-12-03 21:11:14 UTC (rev 12096) +++ trunk/examples/f95/x06f.f90 2011-12-07 08:56:34 UTC (rev 12097) @@ -1,98 +1,97 @@ -! $Id$ -! Displays the plotter symbols for PLPOIN +! $Id$ +! Displays the plotter symbols for PLPOIN ! -! Copyright (C) 2004 Alan W. Irwin +! Copyright (C) 2004 Alan W. Irwin ! -! This file is part of PLplot. +! This file is part of PLplot. ! -! PLplot is free software; you can redistribute it and/or modify -! it under the terms of the GNU Library General Public License as -! published by the Free Software Foundation; either version 2 of the -! License, or (at your option) any later version. +! PLplot is free software; you can redistribute it and/or modify +! it under the terms of the GNU Library General Public License as +! published by the Free Software Foundation; either version 2 of the +! License, or (at your option) any later version. ! -! PLplot is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Library General Public License for more details. +! PLplot is distributed in the hope that it will be useful, +! but WITHOUT ANY WARRANTY; without even the implied warranty of +! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +! GNU Library General Public License for more details. ! -! You should have received a copy of the GNU Library General Public -! License along with PLplot; if not, write to the Free Software -! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +! You should have received a copy of the GNU Library General Public +! License along with PLplot; if not, write to the Free Software +! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - use plplot - implicit none - integer :: i, j, k, font, kind_font, maxfont - real(kind=plflt), dimension(1:1) :: x, y +program x06f95 + use plplot + implicit none + integer :: i, j, k, font, kind_font, maxfont + real(kind=plflt), dimension(1:1) :: x, y - character (len=3) :: text -! Process command-line arguments - call plparseopts(PL_PARSE_FULL) + character (len=3) :: text +! Process command-line arguments + call plparseopts(PL_PARSE_FULL) -! Full sized page for display +! Full sized page for display + call plinit() - call plinit() - - do kind_font = 1,2 + do kind_font = 1,2 call plfontld(kind_font-1) - if (kind_font==1) then - maxfont = 1 - else - maxfont = 4 - endif + maxfont = merge( 1, 4, kind_font==1 ) do font=1,maxfont - call plfont(font) + call plfont(font) - call pladv(0) + call pladv(0) - call plcol0(2) + call plcol0(2) -! Set up viewport and window +! Set up viewport and window - call plvpor(0.1_plflt, 1.0_plflt, 0.1_plflt, 0.9_plflt) - call plwind(0.0_plflt, 1.0_plflt, 0.0_plflt, 1.3_plflt) + call plvpor(0.1_plflt, 1.0_plflt, 0.1_plflt, 0.9_plflt) + call plwind(0.0_plflt, 1.0_plflt, 0.0_plflt, 1.3_plflt) -! Draw the grid using plbox +! Draw the grid using plbox - call plbox('bcg', 0.1_plflt, 0, 'bcg', 0.1_plflt, 0) - call plcol0(15) + call plbox('bcg', 0.1_plflt, 0, 'bcg', 0.1_plflt, 0) + call plcol0(15) -! Write the digits below the frame +! Write the digits below the frame - do i=0,9 - write (text,'(i1)') i - call plmtex('b', 1.5_plflt, (0.1_plflt*i+0.05_plflt), 0.5_plflt, text) - enddo + do i=0,9 + write (text,'(i1)') i + call plmtex('b', 1.5_plflt, (0.1_plflt*i+0.05_plflt), 0.5_plflt, text) + enddo - k=0 - do i=0,12 + k=0 + do i=0,12 -! Write the digits to the left of the frame +! Write the digits to the left of the frame - write (text,'(i0)') 10*i + write (text,'(i0)') 10*i - call plmtex('lv', 1.0_plflt, (1.0_plflt-(2*i+1)/26.0_plflt), & - 1.0_plflt, text) - do j=0,9 - x=0.1_plflt*j+0.05_plflt - y=1.25_plflt-0.1_plflt*i + call plmtex('lv', 1.0_plflt, (1.0_plflt-(2*i+1)/26.0_plflt), & + 1.0_plflt, text) -! Display the symbols + do j=0,9 + x=0.1_plflt*j+0.05_plflt + y=1.25_plflt-0.1_plflt*i - if (k.lt.128) call plpoin(x,y,k) - k=k+1 +! Display the symbols + if (k < 128) call plpoin(x,y,k) + + k=k+1 + + enddo enddo - enddo - if (kind_font==1) then - call plmtex('t', 1.5_plflt, 0.5_plflt, 0.5_plflt, & - 'PLplot Example 6 - plpoin symbols (compact)') - else - call plmtex('t', 1.5_plflt, 0.5_plflt, 0.5_plflt, & - 'PLplot Example 6 - plpoin symbols (extended)') - endif + + if (kind_font==1) then + call plmtex('t', 1.5_plflt, 0.5_plflt, 0.5_plflt, & + 'PLplot Example 6 - plpoin symbols (compact)') + else + call plmtex('t', 1.5_plflt, 0.5_plflt, 0.5_plflt, & + 'PLplot Example 6 - plpoin symbols (extended)') + endif enddo - enddo + enddo - call plend - end + call plend +end program x06f95 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <arj...@us...> - 2011-12-08 05:48:26
|
Revision: 12098 http://plplot.svn.sourceforge.net/plplot/?rev=12098&view=rev Author: arjenmarkus Date: 2011-12-08 05:48:19 +0000 (Thu, 08 Dec 2011) Log Message: ----------- More Fortran 95 features introduced. Reformatted in accordance with the other examples. Modified Paths: -------------- trunk/examples/f95/x07f.f90 trunk/examples/f95/x08f.f90 Modified: trunk/examples/f95/x07f.f90 =================================================================== --- trunk/examples/f95/x07f.f90 2011-12-07 08:56:34 UTC (rev 12097) +++ trunk/examples/f95/x07f.f90 2011-12-08 05:48:19 UTC (rev 12098) @@ -1,96 +1,98 @@ -! $Id$ -! Displays the plotter symbols for PLSYM +! $Id$ +! Displays the plotter symbols for PLSYM ! -! Copyright (C) 2004 Alan W. Irwin +! Copyright (C) 2004 Alan W. Irwin ! -! This file is part of PLplot. +! This file is part of PLplot. ! -! PLplot is free software; you can redistribute it and/or modify -! it under the terms of the GNU Library General Public License as -! published by the Free Software Foundation; either version 2 of the -! License, or (at your option) any later version. +! PLplot is free software; you can redistribute it and/or modify +! it under the terms of the GNU Library General Public License as +! published by the Free Software Foundation; either version 2 of the +! License, or (at your option) any later version. ! -! PLplot is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Library General Public License for more details. +! PLplot is distributed in the hope that it will be useful, +! but WITHOUT ANY WARRANTY; without even the implied warranty of +! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +! GNU Library General Public License for more details. ! -! You should have received a copy of the GNU Library General Public -! License along with PLplot; if not, write to the Free Software -! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +! You should have received a copy of the GNU Library General Public +! License along with PLplot; if not, write to the Free Software +! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - use plplot - implicit none +program x07f95 + use plplot + implicit none - character (len=4) :: text + character (len=4) :: text - integer i, j, k, l, base(20) - data base / & - 0, 100, 0, 100, 200, 500, 600, 700, 800, 900, & - 2000, 2100, 2200, 2300, 2400, 2500, 2600, 2700, 2800, 2900 / + integer :: i, j, k, l + integer, dimension(20) :: base = & + (/ 0, 100, 0, 100, 200, 500, 600, 700, 800, 900, & + 2000, 2100, 2200, 2300, 2400, 2500, 2600, 2700, 2800, 2900 /) - real(kind=plflt), dimension(1:1) :: x, y -! Process command-line arguments - call plparseopts(PL_PARSE_FULL) + real(kind=plflt), dimension(1:1) :: x, y -! Full sized page for display +! Process command-line arguments - call plinit() - call plfontld(0) - do l=1,20 + call plparseopts(PL_PARSE_FULL) + +! Full sized page for display + + call plinit() + call plfontld(0) + do l=1,20 if (l==3) call plfontld(1) call pladv(0) call plcol0(2) -! Set up viewport and window + ! Set up viewport and window call plvpor(0.15_plflt, 0.95_plflt, 0.1_plflt, 0.9_plflt) call plwind(0.0_plflt, 1.0_plflt, 0.0_plflt, 1.0_plflt) -! Draw the grid using plbox + ! Draw the grid using plbox call plbox('bcg', 0.1_plflt, 0,'bcg', 0.1_plflt, 0) call plcol0(15) -! Write the digits below the frame + ! Write the digits below the frame - do i=0,9 - write (text,'(i1)') i - call plmtex('b', 1.5_plflt, (0.1_plflt*i+0.05_plflt), & - 0.5_plflt, text) + do i=0,9 + write (text,'(i1)') i + call plmtex('b', 1.5_plflt, (0.1_plflt*i+0.05_plflt), & + 0.5_plflt, text) enddo + k=0 do i=0,9 -! Write the digits to the left of the frame -! N.B. The chain of if statements is just to ensure no leading -! blanks, consistent with the C version of the example. + ! Write the digits to the left of the frame - write (text,'(i0)') base(l)+10*i + write (text,'(i0)') base(l)+10*i - call plmtex('lv', 1.0_plflt, (0.95_plflt-0.1_plflt*i), & - 1.0_plflt, text) - do j=0,9 - x=0.1_plflt*j+0.05_plflt - y=0.95_plflt-0.1_plflt*i + call plmtex('lv', 1.0_plflt, (0.95_plflt-0.1_plflt*i), & + 1.0_plflt, text) + do j=0,9 + x=0.1_plflt*j+0.05_plflt + y=0.95_plflt-0.1_plflt*i -! Display the symbols + ! Display the symbols - call plsym(x,y,base(l)+k) - k=k+1 - enddo + call plsym(x,y,base(l)+k) + k=k+1 + enddo enddo if (l<=2) then - call plmtex('t', 1.5_plflt, 0.5_plflt, 0.5_plflt, & - 'PLplot Example 7 - PLSYM symbols (compact)') + call plmtex('t', 1.5_plflt, 0.5_plflt, 0.5_plflt, & + 'PLplot Example 7 - PLSYM symbols (compact)') else - call plmtex('t', 1.5_plflt, 0.5_plflt, 0.5_plflt, & - 'PLplot Example 7 - PLSYM symbols (extended)') + call plmtex('t', 1.5_plflt, 0.5_plflt, 0.5_plflt, & + 'PLplot Example 7 - PLSYM symbols (extended)') endif - enddo + enddo - call plend - end + call plend +end program x07f95 Modified: trunk/examples/f95/x08f.f90 =================================================================== --- trunk/examples/f95/x08f.f90 2011-12-07 08:56:34 UTC (rev 12097) +++ trunk/examples/f95/x08f.f90 2011-12-08 05:48:19 UTC (rev 12098) @@ -1,198 +1,187 @@ -! $Id$ -! 3-d plot demo +! $Id$ +! 3-d plot demo ! -! Copyright (C) 2004 Alan W. Irwin +! Copyright (C) 2004 Alan W. Irwin ! -! This file is part of PLplot. +! This file is part of PLplot. ! -! PLplot is free software; you can redistribute it and/or modify -! it under the terms of the GNU Library General Public License as -! published by the Free Software Foundation; either version 2 of the -! License, or (at your option) any later version. +! PLplot is free software; you can redistribute it and/or modify +! it under the terms of the GNU Library General Public License as +! published by the Free Software Foundation; either version 2 of the +! License, or (at your option) any later version. ! -! PLplot is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Library General Public License for more details. +! PLplot is distributed in the hope that it will be useful, +! but WITHOUT ANY WARRANTY; without even the implied warranty of +! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +! GNU Library General Public License for more details. ! -! You should have received a copy of the GNU Library General Public -! License along with PLplot; if not, write to the Free Software -! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +! You should have received a copy of the GNU Library General Public +! License along with PLplot; if not, write to the Free Software +! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - use plplot, PI => PL_PI - implicit none - integer i, j, k, ifshade, xpts, ypts, xdim, ydim -! xdim is the leading dimension of z, xpts <= xdim is the leading -! dimension of z that is defined. - parameter (xdim=99, ydim=100, xpts=35, ypts=46) - real(kind=plflt) x(xdim), y(ydim), z(xdim,ypts), xx, yy, r +program x08f95 + use plplot, PI => PL_PI + use plf95demolib - character (len=80) title(2) - real(kind=plflt) alt(2),az(2) - data alt /60.0_plflt,20.0_plflt/ - data az /30.0_plflt,60.0_plflt/ - data title /'#frPLplot Example 8 - Alt=60, Az=30', & - '#frPLplot Example 8 - Alt=20, Az=60'/ - integer rosen - integer nlevel - parameter (nlevel = 10) - real(kind=plflt) zmin, zmax, step, clevel(nlevel) -! Process command-line arguments - call plparseopts(PL_PARSE_FULL) + implicit none + integer :: i, j, k, ifshade - rosen = 1 +! xdim is the leading dimension of z, xpts <= xdim is the leading +! dimension of z that is defined. + integer, parameter :: xdim=99, ydim=100, xpts=35, ypts=46 + real(kind=plflt) :: x(xdim), y(ydim), z(xdim,ypts), xx, yy, r - do i = 1,xpts - x(i) = dble(i-1-(xpts/2))/dble (xpts/2) - if(rosen.eq.1) x(i) = 1.5_plflt*x(i) - enddo - do j = 1,ypts - y(j) = dble(j-1-(ypts/2))/dble (ypts/2) - if(rosen.eq.1) y(j) = y(j) + 0.5_plflt - enddo + character (len=80) :: title(2) = & + (/'#frPLplot Example 8 - Alt=60, Az=30', & + '#frPLplot Example 8 - Alt=20, Az=60'/) + real(kind=plflt) :: alt(2) = (/60.0_plflt, 20.0_plflt/) + real(kind=plflt) :: az(2) = (/30.0_plflt, 60.0_plflt/) + integer :: rosen + integer, parameter :: nlevel = 10 + real(kind=plflt) :: zmin, zmax, step, clevel(nlevel) - do i=1,xpts +! Process command-line arguments + call plparseopts(PL_PARSE_FULL) + + rosen = 1 + + x = (arange(0,xpts) - xpts/2) / dble(xpts/2) + y = (arange(0,ypts) - ypts/2) / dble(ypts/2) + + if ( rosen == 1 ) then + x = 1.5_plflt * x + y = y + 0.5_plflt + endif + + do i=1,xpts xx = x(i) do j=1,ypts - yy = y(j) - if(rosen.eq.1) then - z(i,j) = (1._plflt - xx)**2 + 100._plflt*(yy - xx**2)**2 -! The log argument may be zero for just the right grid. - if(z(i,j).gt.0._plflt) then - z(i,j) = log(z(i,j)) + yy = y(j) + if (rosen == 1) then + z(i,j) = (1._plflt - xx)**2 + 100._plflt*(yy - xx**2)**2 + + ! The log argument may be zero for just the right grid. + if (z(i,j) > 0._plflt) then + z(i,j) = log(z(i,j)) + else + z(i,j) = -5._plflt + endif else - z(i,j) = -5._plflt + ! Sombrero function + r = sqrt(xx**2 + yy**2) + z(i,j) = exp(-r**2) * cos(2.0_plflt*PI*r) endif - else -! sombrero function - r = sqrt(xx*xx + yy*yy) - z(i,j) = exp(-r*r) * cos(2.0_plflt*PI*r) - endif enddo - enddo - call a2mnmx(z, xpts, ypts, zmin, zmax, xdim) - step = (zmax-zmin)/(nlevel+1) - do i = 1, nlevel - clevel(i) = zmin + step*i - enddo + enddo - call plinit() - call pllightsource(1._plflt, 1._plflt, 1._plflt) - do k=1,2 + zmin = minval( z(1:xpts,:) ) + zmax = maxval( z(1:xpts,:) ) + + step = (zmax-zmin)/(nlevel+1) + clevel = zmin + step * arange(1,nlevel+1) + + call plinit() + call pllightsource(1._plflt, 1._plflt, 1._plflt) + do k=1,2 do ifshade = 0, 3 - call pladv(0) - call plvpor(0.0_plflt, 1.0_plflt, 0.0_plflt, 0.9_plflt ) - call plwind(-1.0_plflt, 1.0_plflt, -0.9_plflt, 1.1_plflt ) - call plcol0(3) - call plmtex('t', 1.0_plflt, 0.5_plflt, 0.5_plflt, title(k)) - call plcol0(1) - if(rosen.eq.1) then - call plw3d(1.0_plflt, 1.0_plflt, 1.0_plflt, -1.5_plflt, & - 1.5_plflt, -0.5_plflt, 1.5_plflt, zmin, zmax, alt(k),az(k)) - else - call plw3d(1.0_plflt, 1.0_plflt, 1.0_plflt, -1.0_plflt, & - 1.0_plflt, -1.0_plflt, 1.0_plflt, zmin, zmax, alt(k),az(k)) - endif - call plbox3('bnstu','x axis', 0.0_plflt, 0, & - 'bnstu', 'y axis', 0.0_plflt, 0, & - 'bcdmnstuv','z axis', 0.0_plflt, 0) - call plcol0(2) - if(ifshade.eq.0) then -! diffuse light surface plot - call cmap1_init(1) - call plsurf3d(x(:xpts), y(:ypts), z(:xpts,:ypts), & - 0, clevel(nlevel:1)) - elseif(ifshade.eq.1) then -! magnitude colored plot - call cmap1_init(0) - call plsurf3d(x(:xpts), y(:ypts), z(:xpts,:ypts), & - MAG_COLOR, clevel(nlevel:1)) - elseif(ifshade.eq.2) then -! magnitude colored plot with faceted squares - call cmap1_init(0) - call plsurf3d(x(:xpts), y(:ypts), z(:xpts,:ypts), & - ior(MAG_COLOR, FACETED), clevel(nlevel:1)) - elseif(ifshade.eq.3) then -! magnitude colored plot with contours - call cmap1_init(0) - call plsurf3d(x(:xpts), y(:ypts), z(:xpts,:ypts), & - ior(MAG_COLOR, ior(SURF_CONT, BASE_CONT)), clevel) - else - stop 'x08f: bad logic' - endif - enddo - enddo - call plend - end + call pladv(0) + call plvpor(0.0_plflt, 1.0_plflt, 0.0_plflt, 0.9_plflt ) + call plwind(-1.0_plflt, 1.0_plflt, -0.9_plflt, 1.1_plflt ) + call plcol0(3) + call plmtex('t', 1.0_plflt, 0.5_plflt, 0.5_plflt, title(k)) + call plcol0(1) + if (rosen ==1) then + call plw3d(1.0_plflt, 1.0_plflt, 1.0_plflt, -1.5_plflt, & + 1.5_plflt, -0.5_plflt, 1.5_plflt, zmin, zmax, alt(k),az(k)) + else + call plw3d(1.0_plflt, 1.0_plflt, 1.0_plflt, -1.0_plflt, & + 1.0_plflt, -1.0_plflt, 1.0_plflt, zmin, zmax, alt(k),az(k)) + endif + call plbox3('bnstu','x axis', 0.0_plflt, 0, & + 'bnstu', 'y axis', 0.0_plflt, 0, & + 'bcdmnstuv','z axis', 0.0_plflt, 0) + call plcol0(2) + select case (ifshade) + case( 0 ) + ! diffuse light surface plot + call cmap1_init(1) + call plsurf3d(x(:xpts), y(:ypts), z(:xpts,:ypts), & + 0, clevel(nlevel:1)) + + case( 1 ) + ! magnitude colored plot + call cmap1_init(0) + call plsurf3d(x(:xpts), y(:ypts), z(:xpts,:ypts), & + MAG_COLOR, clevel(nlevel:1)) + + case( 2 ) + ! magnitude colored plot with faceted squares + call cmap1_init(0) + call plsurf3d(x(:xpts), y(:ypts), z(:xpts,:ypts), & + ior(MAG_COLOR, FACETED), clevel(nlevel:1)) + + case( 3 ) + ! magnitude colored plot with contours + call cmap1_init(0) + call plsurf3d(x(:xpts), y(:ypts), z(:xpts,:ypts), & + ior(MAG_COLOR, ior(SURF_CONT, BASE_CONT)), clevel) + case default + stop 'x08f: bad logic' + end select + enddo + enddo + call plend +contains + !---------------------------------------------------------------------------- - subroutine cmap1_init(gray) -! For gray.eq.1, basic grayscale variation from half-dark -! to light. Otherwise, hue variations around the front of the -! colour wheel from blue to green to red with constant lightness -! and saturation. + subroutine cmap1_init(gray) - use plplot - implicit none - integer gray - real(kind=plflt) i(0:1), h(0:1), l(0:1), s(0:1) -! left boundary - i(0) = 0._plflt -! right boundary - i(1) = 1._plflt - if (gray.eq.1) then -! hue -- low: red (arbitrary if s=0) +! For gray.eq.1, basic grayscale variation from half-dark +! to light. Otherwise, hue variations around the front of the +! colour wheel from blue to green to red with constant lightness +! and saturation. + + integer :: gray + real(kind=plflt) :: i(0:1), h(0:1), l(0:1), s(0:1) + +! left boundary + i(0) = 0._plflt +! right boundary + i(1) = 1._plflt + if (gray == 1) then +! hue -- low: red (arbitrary if s=0) h(0) = 0.0_plflt -! hue -- high: red (arbitrary if s=0) +! hue -- high: red (arbitrary if s=0) h(1) = 0.0_plflt -! lightness -- low: half-dark +! lightness -- low: half-dark l(0) = 0.5_plflt -! lightness -- high: light +! lightness -- high: light l(1) = 1.0_plflt -! minimum saturation +! minimum saturation s(0) = 0.0_plflt -! minimum saturation +! minimum saturation s(1) = 0.0_plflt - else -! This combination of hues ranges from blue to cyan to green to yellow -! to red (front of colour wheel) with constant lightness = 0.6 -! and saturation = 0.8. + else +! This combination of hues ranges from blue to cyan to green to yellow +! to red (front of colour wheel) with constant lightness = 0.6 +! and saturation = 0.8. -! hue -- low: blue +! hue -- low: blue h(0) = 240._plflt -! hue -- high: red +! hue -- high: red h(1) = 0.0_plflt -! lightness -- low: +! lightness -- low: l(0) = 0.6_plflt -! lightness -- high: +! lightness -- high: l(1) = 0.6_plflt -! saturation +! saturation s(0) = 0.8_plflt -! minimum saturation +! minimum saturation s(1) = 0.8_plflt - endif - call plscmap1n(256) - call plscmap1l(.false., i, h, l, s) - end - -!---------------------------------------------------------------------------- -! Subroutine a2mnmx -! Minimum and the maximum elements of a 2-d array. - - subroutine a2mnmx(f, nx, ny, fmin, fmax, xdim) - use plplot - implicit none - - integer i, j, nx, ny, xdim - real(kind=plflt) f(xdim, ny), fmin, fmax - - fmax = f(1, 1) - fmin = fmax - do j = 1, ny - do i = 1, nx - fmax = max(fmax, f(i, j)) - fmin = min(fmin, f(i, j)) - enddo - enddo - end + endif + call plscmap1n(256) + call plscmap1l(.false., i, h, l, s) +end subroutine cmap1_init +end program x08f95 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <arj...@us...> - 2012-01-07 11:55:24
|
Revision: 12124 http://plplot.svn.sourceforge.net/plplot/?rev=12124&view=rev Author: arjenmarkus Date: 2012-01-07 11:55:17 +0000 (Sat, 07 Jan 2012) Log Message: ----------- Three more Fortran 95 examples adapted to the new style Modified Paths: -------------- trunk/examples/f95/x09f.f90 trunk/examples/f95/x10f.f90 trunk/examples/f95/x11f.f90 Modified: trunk/examples/f95/x09f.f90 =================================================================== --- trunk/examples/f95/x09f.f90 2012-01-05 13:59:36 UTC (rev 12123) +++ trunk/examples/f95/x09f.f90 2012-01-07 11:55:17 UTC (rev 12124) @@ -1,374 +1,356 @@ -! $Id$ -! Contour plot demo. +! $Id$ +! Contour plot demo. ! -! Copyright (C) 2004 Alan W. Irwin +! Copyright (C) 2004 Alan W. Irwin ! -! This file is part of PLplot. +! This file is part of PLplot. ! -! PLplot is free software; you can redistribute it and/or modify -! it under the terms of the GNU Library General Public License as -! published by the Free Software Foundation; either version 2 of the -! License, or (at your option) any later version. +! PLplot is free software; you can redistribute it and/or modify +! it under the terms of the GNU Library General Public License as +! published by the Free Software Foundation; either version 2 of the +! License, or (at your option) any later version. ! -! PLplot is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Library General Public License for more details. +! PLplot is distributed in the hope that it will be useful, +! but WITHOUT ANY WARRANTY; without even the implied warranty of +! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +! GNU Library General Public License for more details. ! -! You should have received a copy of the GNU Library General Public -! License along with PLplot; if not, write to the Free Software -! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +! You should have received a copy of the GNU Library General Public +! License along with PLplot; if not, write to the Free Software +! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -! Does several contour plots using different coordinate mappings. - use plplot, PI => PL_PI - implicit none - integer i, j, nptsx, nptsy, xdim, ydim -! xdim and ydim are the absolute static dimensions. -! nptsx, and nptsy are the (potentially dynamic) defined area of the 2D -! arrays that is actually used. - parameter (xdim=99, ydim=100, nptsx=35,nptsy=46) +! Does several contour plots using different coordinate mappings. - real(kind=plflt) z(xdim, ydim), w(xdim, ydim), clevel(11), & - xg1(xdim), yg1(ydim), & - xg2(xdim, ydim), yg2(xdim, ydim) - real(kind=plflt) xx, yy, argx, argy, distort - real(kind=plflt) tr(6) +program x09f95 + use plplot, PI => PL_PI, TWOPI => PL_TWOPI + use plf95demolib + implicit none + integer i, j - data clevel /-1._plflt, -0.8_plflt, -0.6_plflt, & - -0.4_plflt, -0.2_plflt, & - 0._plflt, 0.2_plflt, 0.4_plflt, 0.6_plflt ,0.8_plflt, 1._plflt/ -! Process command-line arguments - call plparseopts(PL_PARSE_FULL) +! xdim and ydim are the absolute static dimensions. +! nptsx, and nptsy are the (potentially dynamic) defined area of the 2D +! arrays that is actually used. + integer, parameter :: xdim=99, ydim=100, nptsx=35, nptsy=46 - tr(1) = 2._plflt/dble(nptsx-1) - tr(2) = 0.0_plflt - tr(3) = -1.0_plflt - tr(4) = 0.0_plflt - tr(5) = 2._plflt/dble(nptsy-1) - tr(6) = -1.0_plflt + real(kind=plflt) :: z(xdim, ydim), w(xdim, ydim), & + xg1(xdim), yg1(ydim), & + xg2(xdim, ydim), yg2(xdim, ydim) + real(kind=plflt) :: xc(nptsx), yc(nptsy) + real(kind=plflt) :: xx, yy, argx, argy, distort + real(kind=plflt) :: tr(6) -! Calculate the data matrices. - do i=1,nptsx - xx = dble(i-1-(nptsx/2))/dble (nptsx/2) + real(kind=plflt) :: clevel(11) = & + (/ -1._plflt, -0.8_plflt, -0.6_plflt, -0.4_plflt, -0.2_plflt, & + 0._plflt, 0.2_plflt, 0.4_plflt, 0.6_plflt, 0.8_plflt, 1._plflt /) + +! Process command-line arguments + call plparseopts(PL_PARSE_FULL) + + tr = (/ 2._plflt/dble(nptsx-1), 0.0_plflt, -1.0_plflt, & + 0.0_plflt, 2._plflt/dble(nptsy-1), -1.0_plflt /) + +! Calculate the data matrices. + xc = (arange(0,nptsx) - (nptsx/2)) / dble(nptsx/2) + yc = (arange(0,nptsy) - (nptsy/2)) / dble(nptsy/2) - 1.0_plflt + + do i=1,nptsx do j=1,nptsy - yy = dble(j-1-(nptsy/2))/dble (nptsy/2) - 1.0_plflt - z(i,j) = xx*xx - yy*yy - w(i,j) = 2._plflt*xx*yy + z(i,j) = xc(i)**2 - yc(j)**2 + w(i,j) = 2._plflt*xc(i)*yc(j) enddo - enddo + enddo -! Build the 1-d coord arrays. - distort = 0.4_plflt - do i=1,nptsx - xx = -1._plflt + dble(i-1)*2._plflt/dble(nptsx-1) - xg1(i) = xx + distort*cos(0.5_plflt*PI*xx) - enddo +! Build the 1-d coord arrays. + distort = 0.4_plflt - do j=1,nptsy - yy = -1._plflt + dble(j-1)*2._plflt/dble(nptsy-1) - yg1(j) = yy - distort*cos(0.5_plflt*PI*yy) - enddo + xg1 = coord_function( arange(0,nptsx) / dble(nptsx-1), distort ) + yg1 = coord_function( arange(0,nptsy) / dble(nptsy-1), -distort ) -! Build the 2-d coord arrays. - do i=1,nptsx +! Build the 2-d coord arrays. + do i=1,nptsx xx = -1._plflt + dble(i-1)*2._plflt/dble(nptsx-1) argx = 0.5_plflt*PI*xx do j=1,nptsy - yy = -1._plflt + dble(j-1)*2._plflt/dble(nptsy-1) - argy = 0.5_plflt*PI*yy - xg2(i,j) = xx + distort*cos(argx)*cos(argy) - yg2(i,j) = yy - distort*cos(argx)*cos(argy) + yy = -1._plflt + dble(j-1)*2._plflt/dble(nptsy-1) + argy = 0.5_plflt*PI*yy + xg2(i,j) = xx + distort*cos(argx)*cos(argy) + yg2(i,j) = yy - distort*cos(argx)*cos(argy) enddo - enddo + enddo - call plinit + call plinit -! Plot using identity transform - call pl_setcontlabelformat(4,3) - call pl_setcontlabelparam(0.006_plflt, 0.3_plflt, 0.1_plflt, 1) - call plenv(-1.0_plflt, 1.0_plflt, -1.0_plflt, 1.0_plflt, 0, 0) - call plcol0(2) - call plcont(z,1,nptsx,1,nptsy,clevel,tr) - call plstyl(1,1500,1500) - call plcol0(3) - call plcont(w,1,nptsx,1,nptsy,clevel,tr) - call plstyl(0,1500,1500) - call plcol0(1) - call pllab('X Coordinate', 'Y Coordinate', & - 'Streamlines of flow') - call pl_setcontlabelparam(0.006_plflt, 0.3_plflt, 0.1_plflt, 0) +! Plot using identity transform + call pl_setcontlabelformat(4, 3) + call pl_setcontlabelparam(0.006_plflt, 0.3_plflt, 0.1_plflt, 1) + call plenv(-1.0_plflt, 1.0_plflt, -1.0_plflt, 1.0_plflt, 0, 0) + call plcol0(2) + call plcont(z, 1, nptsx, 1, nptsy, clevel, tr) + call plstyl(1, 1500, 1500) + call plcol0(3) + call plcont(w, 1, nptsx, 1, nptsy, clevel, tr) + call plstyl(0, 1500, 1500) + call plcol0(1) + call pllab('X Coordinate', 'Y Coordinate', 'Streamlines of flow') + call pl_setcontlabelparam(0.006_plflt, 0.3_plflt, 0.1_plflt, 0) -! Plot using 1d coordinate transform - call plenv(-1.0_plflt, 1.0_plflt, -1.0_plflt, 1.0_plflt, 0, 0) - call plcol0(2) - call plcont(z,1,nptsx,1,nptsy,clevel, xg1, yg1) - call plstyl(1,1500,1500) - call plcol0(3) - call plcont(w,1,nptsx,1,nptsy,clevel, xg1, yg1) - call plstyl(0,1500,1500) - call plcol0(1) - call pllab('X Coordinate', 'Y Coordinate', & - 'Streamlines of flow') +! Plot using 1d coordinate transform + call plenv(-1.0_plflt, 1.0_plflt, -1.0_plflt, 1.0_plflt, 0, 0) + call plcol0(2) + call plcont(z, 1, nptsx, 1, nptsy, clevel, xg1, yg1) + call plstyl(1, 1500, 1500) + call plcol0(3) + call plcont(w, 1, nptsx, 1, nptsy, clevel, xg1, yg1) + call plstyl(0, 1500, 1500) + call plcol0(1) + call pllab('X Coordinate', 'Y Coordinate', 'Streamlines of flow') -! Plot using 2d coordinate transform - call plenv(-1.0_plflt, 1.0_plflt, -1.0_plflt, 1.0_plflt, 0, 0) - call plcol0(2) - call plcont(z,1,nptsx,1,nptsy,clevel,xg2,yg2) - call plstyl(1,1500,1500) - call plcol0(3) - call plcont(w,1,nptsx,1,nptsy,clevel,xg2,yg2) - call plstyl(0,1500,1500) - call plcol0(1) - call pllab('X Coordinate', 'Y Coordinate', & - 'Streamlines of flow') +! Plot using 2d coordinate transform + call plenv(-1.0_plflt, 1.0_plflt, -1.0_plflt, 1.0_plflt, 0, 0) + call plcol0(2) + call plcont(z, 1, nptsx, 1, nptsy, clevel, xg2, yg2) + call plstyl(1, 1500, 1500) + call plcol0(3) + call plcont(w, 1, nptsx, 1, nptsy, clevel, xg2, yg2) + call plstyl(0, 1500, 1500) + call plcol0(1) + call pllab('X Coordinate', 'Y Coordinate', 'Streamlines of flow') - call polar() - call potential() + call polar() + call potential() - call plend - end + call plend +contains -! polar contour plot example. - subroutine polar() - use plplot, PI => PL_PI - implicit none - integer PERIMETERPTS, RPTS, THETAPTS, NLEVEL, xdim, ydim - parameter(PERIMETERPTS = 100) -! xdim and ydim are the absolute static size of the 2D arrays. -! RPTS and THETAPTS are associated with the part of the -! 2D arrays that are defined. - parameter(xdim=99, RPTS = 40) - parameter(ydim=100, THETAPTS = 40) - parameter(NLEVEL=10) - integer i,j - real(kind=plflt) xg(xdim, ydim), yg(xdim, ydim), & +!---------------------------------------------------------------------------- +! Auxiliary function to compute the coordinates + +elemental real(kind=plflt) function coord_function( coord, factor ) + real(kind=plflt), intent(in) :: coord + real(kind=plflt), intent(in) :: factor + + real(kind=plflt) :: tcoord + + tcoord = -1.0_plflt + coord * 2.0_plflt + coord_function = tcoord + factor*cos(0.5_plflt*PI*tcoord) +end function coord_function + +!---------------------------------------------------------------------------- +! polar contour plot example. +subroutine polar() + integer, parameter :: PERIMETERPTS = 100 + +! xdim and ydim are the absolute static size of the 2D arrays. +! RPTS and THETAPTS are associated with the part of the +! 2D arrays that are defined. + integer, parameter :: xdim=99, RPTS = 40 + integer, parameter :: ydim=100, THETAPTS = 40 + integer, parameter :: NLEVEL=10 + integer :: i,j + real(kind=plflt) :: xg(xdim, ydim), yg(xdim, ydim), & z(xdim, ydim), px(PERIMETERPTS), py(PERIMETERPTS), & - lev(NLEVEL), t, r, theta - call plenv(-1._plflt, 1._plflt, -1._plflt, 1._plflt, 0, -2) - call plcol0(1) -! perimeter. - do i = 1, PERIMETERPTS - t = (2._plflt*PI/(PERIMETERPTS-1))*dble(i-1) - px(i) = cos(t) - py(i) = sin(t) - enddo - call plline(px, py) + lev(NLEVEL), t, r, theta, delta -! create data to be contoured. - do j = 1, THETAPTS + call plenv(-1._plflt, 1._plflt, -1._plflt, 1._plflt, 0, -2) + call plcol0(1) + +! perimeter. + delta = 2._plflt*PI/(PERIMETERPTS-1) + px = cos(delta*arange(0, PERIMETERPTS)) + py = sin(delta*arange(0, PERIMETERPTS)) + + call plline(px, py) + +! create data to be contoured. + do j = 1, THETAPTS theta = (2._plflt*PI/dble(THETAPTS-1))*dble(j-1) do i = 1, RPTS - r = (i-1)/dble(RPTS-1) - xg(i,j) = r*cos(theta) - yg(i,j) = r*sin(theta) - z(i,j) = r + r = (i-1)/dble(RPTS-1) + xg(i,j) = r*cos(theta) + yg(i,j) = r*sin(theta) + z(i,j) = r enddo - enddo + enddo -! create contour values. - do i = 1, NLEVEL - lev(i) = 0.05_plflt + 0.10_plflt*dble(i-1) - enddo +! create contour values. + lev = 0.05_plflt + 0.10_plflt * arange(0,nlevel) -! plot the (polar) contours. - call plcol0(2) - call plcont(z, 1, RPTS, 1, THETAPTS, lev, xg, yg) - call plcol0(1) - call pllab('', '', 'Polar Contour Plot') - end +! plot the (polar) contours. + call plcol0(2) + call plcont(z, 1, RPTS, 1, THETAPTS, lev, xg, yg) + call plcol0(1) + call pllab('', '', 'Polar Contour Plot') +end subroutine polar -! shielded potential contour plot example - subroutine potential() - use plplot, TWOPI => PL_TWOPI - implicit none +!---------------------------------------------------------------------------- +! shielded potential contour plot example +subroutine potential() - integer NCX, NCY, NPLT, i, j, nx, ny, kx, lx, ky, ly, & + integer :: i, j, nx, ny, kx, lx, ky, ly, & nlevel, ilevgt, ilevlt, nlevlt, nlevgt, & ncollin, ncolbox, ncollab, & - nxsub, nysub, xdim, ydim - real(kind=plflt) r, theta, rmax, x0, & + nxsub, nysub + real(kind=plflt) :: r, theta, rmax, x0, & y0, xmin, xmax, eps, q1, d1, & ymin, ymax, & q1i, d1i, q2, d2, q2i, d2i, div1, div1i, div2, div2i, & zmin, zmax, dz, xpmin, xpmax, ypmin, ypmax, & - xtick, ytick -! xdim and ydim are the absolute static size of the 2D arrays. -! NCX and NCY are associated with the part of the -! 2D arrays that are defined. - parameter (xdim=99, NCX=40, ydim=100, NCY=64, NPLT=100) + xtick, ytick, delta - real(kind=plflt) z(xdim, ydim), ztmp(xdim, ydim+1) - real(kind=plflt) xg(xdim, ydim+1), yg(xdim, ydim+1), xtm(NPLT), ytm(NPLT) +! xdim and ydim are the absolute static size of the 2D arrays. +! NCX and NCY are associated with the part of the +! 2D arrays that are defined. + integer, parameter :: xdim=99, NCX=40, ydim=100, NCY=64, NPLT=100 - real(kind=plflt) clevel(20) - character(len=8) xopt, yopt + real(kind=plflt) :: z(xdim, ydim), ztmp(xdim, ydim+1) + real(kind=plflt) :: xg(xdim, ydim+1), yg(xdim, ydim+1), xtm(NPLT), ytm(NPLT) - nx = NCX - ny = NCY + real(kind=plflt) :: clevel(20) + character(len=8) :: xopt, yopt - kx = 1 - lx = nx - ky = 1 - ly = ny + nx = NCX + ny = NCY -! Set up r-theta grids -! Tack on extra cell in theta to handle periodicity. + kx = 1 + lx = nx + ky = 1 + ly = ny - do i = 1, nx +! Set up r-theta grids +! Tack on extra cell in theta to handle periodicity. + + do i = 1, nx r = i - 0.5_plflt do j = 1, ny - theta = TWOPI/dble(ny-1) * (j-0.5_plflt) - xg(i,j) = r * cos(theta) - yg(i,j) = r * sin(theta) + theta = TWOPI/dble(ny-1) * (j-0.5_plflt) + xg(i,j) = r * cos(theta) + yg(i,j) = r * sin(theta) enddo xg(i, ny+1) = xg(i, 1) yg(i, ny+1) = yg(i, 1) - enddo - call a2mnmx(xg, nx, ny, xmin, xmax, xdim) - call a2mnmx(yg, nx, ny, ymin, ymax, xdim) - rmax = r - x0 = (xmin + xmax)/2._plflt - y0 = (ymin + ymax)/2._plflt + enddo -! Potential inside a conducting cylinder (or sphere) by method of images. -! Charge 1 is placed at (d1, d1), with image charge at (d2, d2). -! Charge 2 is placed at (d1, -d1), with image charge at (d2, -d2). -! Also put in smoothing term at small distances. + xmax = maxval( xg(1:nx,1:ny) ) + xmin = minval( xg(1:nx,1:ny) ) + ymax = maxval( yg(1:nx,1:ny) ) + ymin = minval( yg(1:nx,1:ny) ) - eps = 2._plflt + rmax = r + x0 = (xmin + xmax)/2._plflt + y0 = (ymin + ymax)/2._plflt - q1 = 1._plflt - d1 = r/4._plflt +! Potential inside a conducting cylinder (or sphere) by method of images. +! Charge 1 is placed at (d1, d1), with image charge at (d2, d2). +! Charge 2 is placed at (d1, -d1), with image charge at (d2, -d2). +! Also put in smoothing term at small distances. - q1i = - q1*r/d1 - d1i = r**2/d1 + eps = 2._plflt - q2 = -1._plflt - d2 = r/4._plflt + q1 = 1._plflt + d1 = r/4._plflt - q2i = - q2*r/d2 - d2i = r**2/d2 + q1i = - q1*r/d1 + d1i = r**2/d1 - do i = 1, nx + q2 = -1._plflt + d2 = r/4._plflt + + q2i = - q2*r/d2 + d2i = r**2/d2 + + do i = 1, nx do j = 1, ny - div1 = sqrt((xg(i,j)-d1)**2 + (yg(i,j)-d1)**2 + eps**2) - div1i = sqrt((xg(i,j)-d1i)**2 + (yg(i,j)-d1i)**2 + eps**2) + div1 = sqrt((xg(i,j)-d1)**2 + (yg(i,j)-d1)**2 + eps**2) + div1i = sqrt((xg(i,j)-d1i)**2 + (yg(i,j)-d1i)**2 + eps**2) - div2 = sqrt((xg(i,j)-d2)**2 + (yg(i,j)+d2)**2 + eps**2) - div2i = sqrt((xg(i,j)-d2i)**2 + (yg(i,j)+d2i)**2 + eps**2) + div2 = sqrt((xg(i,j)-d2)**2 + (yg(i,j)+d2)**2 + eps**2) + div2i = sqrt((xg(i,j)-d2i)**2 + (yg(i,j)+d2i)**2 + eps**2) - z(i,j) = q1/div1 + q1i/div1i + q2/div2 + q2i/div2i + z(i,j) = q1/div1 + q1i/div1i + q2/div2 + q2i/div2i enddo - enddo + enddo -! Tack on extra cell in theta to handle periodicity. +! Tack on extra cell in theta to handle periodicity. - do i = 1, nx - do j = 1, ny - ztmp(i,j) = z(i,j) - enddo - ztmp(i, ny+1) = z(i, 1) - enddo - call a2mnmx(z, nx, ny, zmin, zmax, xdim) + ztmp(:,1:ny) = z + ztmp(:,ny+1:ny+1) = z(:,1:1) -! Set up contour levels. + zmax = maxval( z(1:nx,1:ny) ) + zmin = minval( z(1:nx,1:ny) ) - nlevel = 20 - dz = abs(zmax - zmin)/dble (nlevel) - do i = 1, nlevel - clevel(i) = zmin + (i-0.5_plflt)*dz - enddo +! Set up contour levels. -! Split contours into two parts, z > 0, and z < 0. -! Dashed contours will be at levels 'ilevlt' through 'ilevlt+nlevlt'. -! Solid contours will be at levels 'ilevgt' through 'ilevgt+nlevgt'. + nlevel = 20 + dz = abs(zmax - zmin)/dble (nlevel) + clevel(1:nlevel) = zmin + (arange(1,nlevel+1) - 0.5_plflt) * dz - ilevlt = 1 - i = 1 - do while(i.le.nlevel.and.clevel(min(i,nlevel)).le.0._plflt) - i = i + 1 - enddo - nlevlt = i - 1 - ilevgt = ilevlt + nlevlt - nlevgt = nlevel - nlevlt +! Split contours into two parts, z > 0, and z < 0. +! Dashed contours will be at levels 'ilevlt' through 'ilevlt+nlevlt'. +! Solid contours will be at levels 'ilevgt' through 'ilevgt+nlevgt'. +! +! Since the array clevel is ordered, we can find the level +! where the values become positive by counting the non-positive +! elements -! Advance graphics frame and get ready to plot. + ilevlt = 1 + nlevlt = count( clevel(1:nlevel) <= 0.0_plflt ) + ilevgt = ilevlt + nlevlt + nlevgt = nlevel - nlevlt - ncollin = 11 - ncolbox = 1 - ncollab = 2 +! Advance graphics frame and get ready to plot. - call pladv(0) - call plcol0(ncolbox) + ncollin = 11 + ncolbox = 1 + ncollab = 2 -! Scale window to user coordinates. -! Make a bit larger so the boundary doesn't get clipped. + call pladv(0) + call plcol0(ncolbox) - eps = 0.05_plflt - xpmin = xmin - abs(xmin)*eps - xpmax = xmax + abs(xmax)*eps - ypmin = ymin - abs(ymin)*eps - ypmax = ymax + abs(ymax)*eps +! Scale window to user coordinates. +! Make a bit larger so the boundary doesn't get clipped. - call plvpas(0.1_plflt, 0.9_plflt, 0.1_plflt, & - 0.9_plflt, 1.0_plflt ) - call plwind(xpmin, xpmax, ypmin, ypmax) + eps = 0.05_plflt + xpmin = xmin - abs(xmin)*eps + xpmax = xmax + abs(xmax)*eps + ypmin = ymin - abs(ymin)*eps + ypmax = ymax + abs(ymax)*eps - xopt = ' ' - yopt = ' ' - xtick = 0._plflt - nxsub = 0 - ytick = 0._plflt - nysub = 0 + call plvpas(0.1_plflt, 0.9_plflt, 0.1_plflt, 0.9_plflt, 1.0_plflt ) + call plwind(xpmin, xpmax, ypmin, ypmax) - call plbox(xopt, xtick, nxsub, yopt, ytick, nysub) + xopt = ' ' + yopt = ' ' + xtick = 0._plflt + nxsub = 0 + ytick = 0._plflt + nysub = 0 -! Call plotter once for z < 0 (dashed), once for z > 0 (solid lines). + call plbox(xopt, xtick, nxsub, yopt, ytick, nysub) - call plcol0(ncollin) - if(nlevlt .gt. 0) then - call pllsty(2) - call plcont(ztmp, kx, lx, ky, ly+1, & - clevel(ilevlt:nlevlt), xg, yg) - endif - if(nlevgt .gt. 0) then +! Call plotter once for z < 0 (dashed), once for z > 0 (solid lines). + + call plcol0(ncollin) + if (nlevlt > 0) then + call pllsty(2) + call plcont(ztmp, kx, lx, ky, ly+1, & + clevel(ilevlt:nlevlt), xg, yg) + endif + if (nlevgt > 0) then call pllsty(1) call plcont(ztmp, kx, lx, ky, ly+1, & - clevel(ilevgt:ilevgt-1+nlevgt), xg, yg) - endif + clevel(ilevgt:ilevgt-1+nlevgt), xg, yg) + endif -! Draw boundary. +! Draw boundary. - do i = 1, NPLT - theta = (TWOPI)/(NPLT-1) * dble (i-1) - xtm(i) = x0 + rmax * cos(theta) - ytm(i) = y0 + rmax * sin(theta) - enddo - call plcol0(ncolbox) - call plline(xtm, ytm) + delta = TWOPI/(NPLT-1) + xtm = x0 + rmax * cos(delta*arange(0,NPLT)) + ytm = y0 + rmax * sin(delta*arange(0,NPLT)) - call plcol0(ncollab) - call pllab('', '', & - 'Shielded potential of charges in a conducting sphere') - end + call plcol0(ncolbox) + call plline(xtm, ytm) -!---------------------------------------------------------------------------- -! Subroutine a2mnmx -! Minimum and the maximum elements of a 2-d array. - - subroutine a2mnmx(f, nx, ny, fmin, fmax, xdim) - use plplot - implicit none - - integer i, j, nx, ny, xdim - real(kind=plflt) f(xdim, ny), fmin, fmax - - fmax = f(1, 1) - fmin = fmax - do j = 1, ny - do i = 1, nx - fmax = max(fmax, f(i, j)) - fmin = min(fmin, f(i, j)) - enddo - enddo - end + call plcol0(ncollab) + call pllab('', '', 'Shielded potential of charges in a conducting sphere') +end subroutine potential +end program x09f95 Modified: trunk/examples/f95/x10f.f90 =================================================================== --- trunk/examples/f95/x10f.f90 2012-01-05 13:59:36 UTC (rev 12123) +++ trunk/examples/f95/x10f.f90 2012-01-07 11:55:17 UTC (rev 12124) @@ -1,45 +1,45 @@ -! $Id$ -! Demonstration program for PLplot illustrating absolute positioning -! of graphs on a page +! $Id$ +! Demonstration program for PLplot illustrating absolute positioning +! of graphs on a page ! -! Copyright (C) 2004 Alan W. Irwin +! Copyright (C) 2004 Alan W. Irwin ! -! This file is part of PLplot. +! This file is part of PLplot. ! -! PLplot is free software; you can redistribute it and/or modify -! it under the terms of the GNU Library General Public License as -! published by the Free Software Foundation; either version 2 of the -! License, or (at your option) any later version. +! PLplot is free software; you can redistribute it and/or modify +! it under the terms of the GNU Library General Public License as +! published by the Free Software Foundation; either version 2 of the +! License, or (at your option) any later version. ! -! PLplot is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Library General Public License for more details. +! PLplot is distributed in the hope that it will be useful, +! but WITHOUT ANY WARRANTY; without even the implied warranty of +! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +! GNU Library General Public License for more details. ! -! You should have received a copy of the GNU Library General Public -! License along with PLplot; if not, write to the Free Software -! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +! You should have received a copy of the GNU Library General Public +! License along with PLplot; if not, write to the Free Software +! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - use plplot - implicit none -! Process command-line arguments - call plparseopts(PL_PARSE_FULL) +program x10f95 + use plplot + implicit none +! Process command-line arguments + call plparseopts(PL_PARSE_FULL) - call plinit() + call plinit() - call pladv(0) - call plvpor(0.0_plflt, 1.0_plflt, 0.0_plflt, 1.0_plflt ) - call plwind(0.0_plflt, 1.0_plflt, 0.0_plflt, 1.0_plflt ) - call plbox('bc', 0.0_plflt, 0, 'bc', 0.0_plflt, 0 ) + call pladv(0) + call plvpor(0.0_plflt, 1.0_plflt, 0.0_plflt, 1.0_plflt ) + call plwind(0.0_plflt, 1.0_plflt, 0.0_plflt, 1.0_plflt ) + call plbox('bc', 0.0_plflt, 0, 'bc', 0.0_plflt, 0 ) - call plsvpa(50.0_plflt, 150.0_plflt, 50.0_plflt, & - 100.0_plflt ) - call plwind(0.0_plflt, 1.0_plflt, 0.0_plflt, 1.0_plflt ) - call plbox('bc', 0.0_plflt, 0, 'bc', 0.0_plflt, 0 ) - call plptex(0.5_plflt, 0.5_plflt, 1.0_plflt, 0.0_plflt, & - 0.5_plflt, 'BOX at (50,150,50,100)' ) + call plsvpa(50.0_plflt, 150.0_plflt, 50.0_plflt, 100.0_plflt ) + call plwind(0.0_plflt, 1.0_plflt, 0.0_plflt, 1.0_plflt ) + call plbox('bc', 0.0_plflt, 0, 'bc', 0.0_plflt, 0 ) + call plptex(0.5_plflt, 0.5_plflt, 1.0_plflt, 0.0_plflt, & + 0.5_plflt, 'BOX at (50,150,50,100)' ) - call plend + call plend - end +end program x10f95 Modified: trunk/examples/f95/x11f.f90 =================================================================== --- trunk/examples/f95/x11f.f90 2012-01-05 13:59:36 UTC (rev 12123) +++ trunk/examples/f95/x11f.f90 2012-01-07 11:55:17 UTC (rev 12124) @@ -1,181 +1,159 @@ -! $Id$ -! Mesh plot demo +! $Id$ +! Mesh plot demo ! -! Copyright (C) 2004 Alan W. Irwin +! Copyright (C) 2004 Alan W. Irwin ! -! This file is part of PLplot. +! This file is part of PLplot. ! -! PLplot is free software; you can redistribute it and/or modify -! it under the terms of the GNU Library General Public License as -! published by the Free Software Foundation; either version 2 of the -! License, or (at your option) any later version. +! PLplot is free software; you can redistribute it and/or modify +! it under the terms of the GNU Library General Public License as +! published by the Free Software Foundation; either version 2 of the +! License, or (at your option) any later version. ! -! PLplot is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Library General Public License for more details. +! PLplot is distributed in the hope that it will be useful, +! but WITHOUT ANY WARRANTY; without even the implied warranty of +! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +! GNU Library General Public License for more details. ! -! You should have received a copy of the GNU Library General Public -! License along with PLplot; if not, write to the Free Software -! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +! You should have received a copy of the GNU Library General Public +! License along with PLplot; if not, write to the Free Software +! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - use plplot, PI => PL_PI - implicit none - integer i, j, k, ifshade, xpts, ypts - parameter (xpts=35, ypts=46) +program x11f95 + use plplot, PI => PL_PI + use plf95demolib + implicit none + integer, parameter :: xpts=35, ypts=46 + integer :: i, j, k, ifshade - real(kind=plflt) x(xpts), y(ypts), z(xpts,ypts), xx, yy + real(kind=plflt) :: x(xpts), y(ypts), z(xpts,ypts), xx, yy - character(len=80) title(2) - real(kind=plflt) alt(2),az(2) - integer opt(2) - data alt /33.0_plflt,17.0_plflt/ - data az /24.0_plflt,115.0_plflt/ -! DRAW_LINEXY - data opt /2*3/ - data title /'#frPLplot Example 11 - Alt=33, Az=24, Opt=3', & - '#frPLplot Example 11 - Alt=17, Az=115, Opt=3'/ - integer nlevel - parameter (nlevel = 10) - real(kind=plflt) zmin, zmax, step, clevel(nlevel) -! Process command-line arguments - call plparseopts(PL_PARSE_FULL) + character(len=80) :: title(2) = & + (/ '#frPLplot Example 11 - Alt=33, Az=24, Opt=3 ', & + '#frPLplot Example 11 - Alt=17, Az=115, Opt=3' /) + real(kind=plflt) :: alt(2) = (/ 33.0_plflt, 17.0_plflt/) + real(kind=plflt) :: az(2) = (/ 24.0_plflt, 115.0_plflt/) + integer :: opt(2) = (/ 3, 3 /) + integer, parameter :: nlevel = 10 + real(kind=plflt) :: zmin, zmax, step, clevel(nlevel) - do i = 1,xpts - x(i) = 3._plflt*dble(i-1-(xpts/2))/dble (xpts/2) - enddo - do j = 1,ypts - y(j) = 3._plflt*dble(j-1-(ypts/2))/dble (ypts/2) - enddo +! Process command-line arguments + call plparseopts(PL_PARSE_FULL) - do i=1,xpts + x = 3._plflt * (arange(0,xpts) - (xpts/2)) / dble(xpts/2) + y = 3._plflt * (arange(0,ypts) - (ypts/2)) / dble(ypts/2) + + do i=1,xpts xx = x(i) do j=1,ypts - yy = y(j) - z(i,j) = 3._plflt * (1._plflt-xx)*(1._plflt-xx) * & - exp(-(xx*xx) - (yy+1._plflt)*(yy+1._plflt)) - & - 10._plflt * (xx/5._plflt - xx**3 - yy**5) * exp(-xx*xx-yy*yy) - & - 1._plflt/3._plflt * exp(-(xx+1._plflt)*(xx+1._plflt) - (yy*yy)) - if(.false.) then -! Jungfraujoch/Interlaken - if(z(i,j).lt.-1._plflt) z(i,j) = -1._plflt - endif + yy = y(j) + z(i,j) = 3._plflt * (1._plflt-xx)*(1._plflt-xx) * & + exp(-(xx**2) - (yy+1._plflt)*(yy+1._plflt)) - & + 10._plflt * (xx/5._plflt - xx**3 - yy**5) * exp(-xx**2-yy**2) - & + 1._plflt/3._plflt * exp(-(xx+1._plflt)*(xx+1._plflt) - (yy**2)) + enddo - enddo - call a2mnmx(z, xpts, ypts, zmin, zmax) - step = (zmax-zmin)/(nlevel+1) - do i = 1, nlevel - clevel(i) = zmin + step*i - enddo + enddo + if (.false.) then +! Jungfraujoch/Interlaken + z = max(z, -1._plflt) + endif - call plinit() - call cmap1_init(0) - do k=1,2 + zmin = minval(z) + zmax = maxval(z) + + step = (zmax-zmin)/(nlevel+1) + clevel = zmin + step * arange(1,nlevel+1) + + call plinit() + call cmap1_init(0) + + do k=1,2 do ifshade = 0, 3 - call pladv(0) - call plcol0(1) - call plvpor(0.0_plflt, 1.0_plflt, 0.0_plflt, 0.9_plflt ) - call plwind(-1.0_plflt, 1.0_plflt, -1.0_plflt, 1.5_plflt ) - call plw3d(1.0_plflt, 1.0_plflt, 1.2_plflt, -3.0_plflt, & - 3.0_plflt, -3.0_plflt, 3.0_plflt, zmin, zmax, alt(k),az(k)) - call plbox3('bnstu','x axis', 0.0_plflt, 0, & - 'bnstu', 'y axis', 0.0_plflt, 0, & - 'bcdmnstuv','z axis', 0.0_plflt, 0) - call plcol0(2) - if(ifshade.eq.0) then -! wireframe plot - call plmesh(x(:xpts), y(:ypts), z(:xpts,:ypts), & - opt(k)) - elseif(ifshade.eq.1) then -! magnitude colored wireframe plot - call plmesh(x(:xpts), y(:ypts), z(:xpts,:ypts), & - ior(opt(k), MAG_COLOR)) - elseif(ifshade.eq.2) then -! magnitude colored wireframe plot with sides - call plot3d(x(:xpts), y(:ypts), z(:xpts,:ypts), & - ior(opt(k), MAG_COLOR), .true.) - elseif(ifshade.eq.3) then -! magnitude colored wireframe plot with base contour - call plmeshc(x(:xpts), y(:ypts), z(:xpts,:ypts), & - ior(opt(k), ior(MAG_COLOR, BASE_CONT)), clevel) - else - stop 'x11f: bad logic' - endif - call plcol0(3) - call plmtex('t', 1.0_plflt, 0.5_plflt, 0.5_plflt, title(k)) + call pladv(0) + call plcol0(1) + call plvpor(0.0_plflt, 1.0_plflt, 0.0_plflt, 0.9_plflt ) + call plwind(-1.0_plflt, 1.0_plflt, -1.0_plflt, 1.5_plflt ) + call plw3d(1.0_plflt, 1.0_plflt, 1.2_plflt, -3.0_plflt, & + 3.0_plflt, -3.0_plflt, 3.0_plflt, zmin, zmax, alt(k),az(k)) + call plbox3('bnstu', 'x axis', 0.0_plflt, 0, & + 'bnstu', 'y axis', 0.0_plflt, 0, & + 'bcdmnstuv', 'z axis', 0.0_plflt, 0) + call plcol0(2) + + select case (ifshade) + case (0) ! wireframe plot + call plmesh(x(:xpts), y(:ypts), z(:xpts,:ypts), opt(k)) + + case (1) ! magnitude colored wireframe plot + call plmesh(x(:xpts), y(:ypts), z(:xpts,:ypts), ior(opt(k), MAG_COLOR)) + + case (2) ! magnitude colored wireframe plot with sides + call plot3d(x(:xpts), y(:ypts), z(:xpts,:ypts), & + ior(opt(k), MAG_COLOR), .true.) + + case (3) ! magnitude colored wireframe plot with base contour + call plmeshc(x(:xpts), y(:ypts), z(:xpts,:ypts), & + ior(opt(k), ior(MAG_COLOR, BASE_CONT)), clevel) + + case default + stop 'x11f: bad logic' + end select + call plcol0(3) + call plmtex('t', 1.0_plflt, 0.5_plflt, 0.5_plflt, title(k)) enddo - enddo - call plend - end + enddo + call plend +contains !---------------------------------------------------------------------------- - subroutine cmap1_init(gray) -! For gray.eq.1, basic grayscale variation from half-dark -! to light. Otherwise, hue variations around the front of the -! colour wheel from blue to green to red with constant lightness -! and saturation. +subroutine cmap1_init(gray) +! For gray.eq.1, basic grayscale variation from half-dark +! to light. Otherwise, hue variations around the front of the +! colour wheel from blue to green to red with constant lightness +! and saturation. - use plplot - implicit none - integer gray - real(kind=plflt) i(0:1), h(0:1), l(0:1), s(0:1) -! left boundary - i(0) = 0._plflt -! right boundary - i(1) = 1._plflt - if (gray.eq.1) then -! hue -- low: red (arbitrary if s=0) + integer gray + real(kind=plflt) i(0:1), h(0:1), l(0:1), s(0:1) + +! left boundary + i(0) = 0._plflt +! right boundary + i(1) = 1._plflt + if (gray == 1) then +! hue -- low: red (arbitrary if s=0) h(0) = 0.0_plflt -! hue -- high: red (arbitrary if s=0) +! hue -- high: red (arbitrary if s=0) h(1) = 0.0_plflt -! lightness -- low: half-dark +! lightness -- low: half-dark l(0) = 0.5_plflt -! lightness -- high: light +! lightness -- high: light l(1) = 1.0_plflt -! minimum saturation +! minimum saturation s(0) = 0.0_plflt -! minimum saturation +! minimum saturation s(1) = 0.0_plflt - else -! This combination of hues ranges from blue to cyan to green to yellow -! to red (front of colour wheel) with constant lightness = 0.6 -! and saturation = 0.8. + else +! This combination of hues ranges from blue to cyan to green to yellow +! to red (front of colour wheel) with constant lightness = 0.6 +! and saturation = 0.8. -! hue -- low: blue +! hue -- low: blue h(0) = 240._plflt -! hue -- high: red +! hue -- high: red h(1) = 0.0_plflt -! lightness -- low: +! lightness -- low: l(0) = 0.6_plflt -! lightness -- high: +! lightness -- high: l(1) = 0.6_plflt -! saturation +! saturation s(0) = 0.8_plflt -! minimum saturation +! minimum saturation s(1) = 0.8_plflt - endif - call plscmap1n(256) - call plscmap1l(.false., i, h, l, s) - end + endif + call plscmap1n(256) + call plscmap1l(.false., i, h, l, s) +end subroutine cmap1_init -!---------------------------------------------------------------------------- -! Subroutine a2mnmx -! Minimum and the maximum elements of a 2-d array. - - subroutine a2mnmx(f, nx, ny, fmin, fmax) - use plplot - implicit none - - integer i, j, nx, ny - real(kind=plflt) f(nx, ny), fmin, fmax - - fmax = f(1, 1) - fmin = fmax - do j = 1, ny - do i = 1, nx - fmax = max(fmax, f(i, j)) - fmin = min(fmin, f(i, j)) - enddo - enddo - end +end program x11f95 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <arj...@us...> - 2012-01-11 05:31:16
|
Revision: 12125 http://plplot.svn.sourceforge.net/plplot/?rev=12125&view=rev Author: arjenmarkus Date: 2012-01-11 05:31:09 +0000 (Wed, 11 Jan 2012) Log Message: ----------- Reformat some of the smaller examples in accordance with the "new" style Modified Paths: -------------- trunk/examples/f95/x12f.f90 trunk/examples/f95/x13f.f90 trunk/examples/f95/x25f.f90 Modified: trunk/examples/f95/x12f.f90 =================================================================== --- trunk/examples/f95/x12f.f90 2012-01-07 11:55:17 UTC (rev 12124) +++ trunk/examples/f95/x12f.f90 2012-01-11 05:31:09 UTC (rev 12125) @@ -1,124 +1,81 @@ -! $Id$ -! Demonstration program for PLplot: Bar chart example. +! $Id$ +! Demonstration program for PLplot: Bar chart example. ! -! Copyright (C) 2004 Alan W. Irwin +! Copyright (C) 2004 Alan W. Irwin ! -! This file is part of PLplot. +! This file is part of PLplot. ! -! PLplot is free software; you can redistribute it and/or modify -! it under the terms of the GNU Library General Public License as -! published by the Free Software Foundation; either version 2 of the -! License, or (at your option) any later version. +! PLplot is free software; you can redistribute it and/or modify +! it under the terms of the GNU Library General Public License as +! published by the Free Software Foundation; either version 2 of the +! License, or (at your option) any later version. ! -! PLplot is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Library General Public License for more details. +! PLplot is distributed in the hope that it will be useful, +! but WITHOUT ANY WARRANTY; without even the implied warranty of +! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +! GNU Library General Public License for more details. ! -! You should have received a copy of the GNU Library General Public -! License along with PLplot; if not, write to the Free Software -! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +! You should have received a copy of the GNU Library General Public +! License along with PLplot; if not, write to the Free Software +! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - use plplot - implicit none +program x12f95 + use plplot + implicit none - character(len=20) :: string - integer :: i - real(kind=plflt) :: y0(10) - real(kind=plflt) :: pos(5), red(5), green(5), blue(5) + character(len=20) :: string + integer :: i + real(kind=plflt) :: y0(10) + real(kind=plflt) :: pos(5) = (/0.0_plflt, 0.25_plflt, 0.5_plflt, 0.75_plflt, 1.0_plflt/) + real(kind=plflt) :: red(5) = (/0.0_plflt, 0.25_plflt, 0.5_plflt, 1.0_plflt, 1.0_plflt/) + real(kind=plflt) :: green(5) = (/1.0_plflt, 0.5_plflt, 0.5_plflt, 0.5_plflt, 1.0_plflt/) + real(kind=plflt) :: blue(5) = (/1.0_plflt, 1.0_plflt, 0.5_plflt, 0.25_plflt, 0.0_plflt/) - data pos /0.0_plflt, 0.25_plflt, 0.5_plflt, 0.75_plflt, 1.0_plflt/ - data red /0.0_plflt, 0.25_plflt, 0.5_plflt, 1.0_plflt, 1.0_plflt/ - data green /1.0_plflt, 0.5_plflt, 0.5_plflt, 0.5_plflt, 1.0_plflt/ - data blue /1.0_plflt, 1.0_plflt, 0.5_plflt, 0.25_plflt, 0.0_plflt/ +! Process command-line arguments + call plparseopts(PL_PARSE_FULL) -! Process command-line arguments - call plparseopts(PL_PARSE_FULL) + call plinit() - call plinit() + call pladv(0) + call plvsta + call plwind( 1980._plflt, 1990._plflt, 0._plflt, 35._plflt ) + call plbox( 'bc', 1._plflt, 0, 'bcnv', 10._plflt, 0 ) + call plcol0(2) + call pllab( 'Year', 'Widget Sales (millions)', '#frPLplot Example 12' ) - call pladv(0) - call plvsta - call plwind( 1980._plflt, 1990._plflt, 0._plflt, 35._plflt ) - call plbox( 'bc', 1._plflt, 0, 'bcnv', 10._plflt, 0 ) - call plcol0(2) - call pllab( 'Year', 'Widget Sales (millions)', & - '#frPLplot Example 12' ) + y0 = (/ 5, 15, 12, 24, 28, 30, 20, 8, 12, 3 /) - y0(1) = 5 - y0(2) = 15 - y0(3) = 12 - y0(4) = 24 - y0(5) = 28 - y0(6) = 30 - y0(7) = 20 - y0(8) = 8 - y0(9) = 12 - y0(10) = 3 - - call plscmap1l(.true.,pos,red,green,blue) + call plscmap1l(.true.,pos,red,green,blue) - do i = 0, 9 -! call plcol0(i + 1) + do i = 0, 9 +! call plcol0(i + 1) call plcol1(dble(i)/9.0_plflt) call plpsty(0) call plfbox( 1980._plflt+i, y0(i+1) ) - write (string, '(i8)')int(y0(i+1)) - call lalign(string) - call plptex( 1980._plflt+i+0.5_plflt, y0(i+1)+1._plflt, & - 1._plflt, 0._plflt, 0.5_plflt, string ) - write (string, '(i8)')1980+i - call lalign(string) - call plmtex( 'b', 1._plflt, (i+1)*0.1_plflt-0.05_plflt, & - 0.5_plflt, string ) - enddo + write (string, '(i0)') int(y0(i+1)) + call plptex( 1980._plflt+i+0.5_plflt, y0(i+1)+1._plflt, 1._plflt, 0._plflt, 0.5_plflt, string ) + write (string, '(i0)')1980+i + call plmtex( 'b', 1._plflt, (i+1)*0.1_plflt-0.05_plflt, 0.5_plflt, string ) + enddo -! Don't forget to call PLEND to finish off! - call plend - end +! Don't forget to call PLEND to finish off! + call plend +contains -! Suck up leading spaces +subroutine plfbox(x0, y0) + real(kind=plflt) x0, y0, x(4), y(4) - subroutine lalign(string) - use plplot - implicit none - integer i, j, k, max, len - character*(*) string - - max = len(string) - - do i = 1, max - if (string(i:i) .ne. ' ') then - if (i .eq. 1) return - k = 1 - do j = i, max - string(k:k) = string(j:j) - k = k + 1 - enddo - do j = k, max - string(j:j) = ' ' - enddo - return - endif - enddo - end - - subroutine plfbox(x0, y0) - use plplot - implicit none - - real(kind=plflt) x0, y0, x(4), y(4) - - x(1) = x0 - y(1) = 0._plflt - x(2) = x0 - y(2) = y0 - x(3) = x0+1._plflt - y(3) = y0 - x(4) = x0+1._plflt - y(4) = 0._plflt - call plfill(x, y) - call plcol0(1) - call pllsty(1) - call plline(x, y) - end + x(1) = x0 + y(1) = 0._plflt + x(2) = x0 + y(2) = y0 + x(3) = x0+1._plflt + y(3) = y0 + x(4) = x0+1._plflt + y(4) = 0._plflt + call plfill(x, y) + call plcol0(1) + call pllsty(1) + call plline(x, y) +end subroutine plfbox +end program x12f95 Modified: trunk/examples/f95/x13f.f90 =================================================================== --- trunk/examples/f95/x13f.f90 2012-01-07 11:55:17 UTC (rev 12124) +++ trunk/examples/f95/x13f.f90 2012-01-11 05:31:09 UTC (rev 12125) @@ -1,70 +1,66 @@ -! $Id$ -! Pie chart demo. +! $Id$ +! Pie chart demo. ! -! Copyright (C) 2004 Alan W. Irwin +! Copyright (C) 2004 Alan W. Irwin ! -! This file is part of PLplot. +! This file is part of PLplot. ! -! PLplot is free software; you can redistribute it and/or modify -! it under the terms of the GNU Library General Public License as -! published by the Free Software Foundation; either version 2 of the -! License, or (at your option) any later version. +! PLplot is free software; you can redistribute it and/or modify +! it under the terms of the GNU Library General Public License as +! published by the Free Software Foundation; either version 2 of the +! License, or (at your option) any later version. ! -! PLplot is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Library General Public License for more details. +! PLplot is distributed in the hope that it will be useful, +! but WITHOUT ANY WARRANTY; without even the implied warranty of +! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +! GNU Library General Public License for more details. ! -! You should have received a copy of the GNU Library General Public -! License along with PLplot; if not, write to the Free Software -! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +! You should have received a copy of the GNU Library General Public +! License along with PLplot; if not, write to the Free Software +! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - use plplot, PI => PL_PI - implicit none - real(kind=plflt) just, dx, dy, x(500), y(500), per(5) - integer i, j, dthet, theta0, theta1, theta - character(len=20),dimension(5) :: text - data text / 'Maurice', 'Geoffrey', 'Alan', 'Rafael', 'Vince'/ +program x13f95 + use plplot, PI => PL_PI + implicit none + real(kind=plflt) :: just, dx, dy, x(500), y(500) + integer :: i, j, dthet, theta0, theta1, theta + character(len=20), dimension(5) :: text = & + (/ 'Maurice ', 'Geoffrey', 'Alan ', 'Rafael ', 'Vince '/) + real(kind=plflt) :: per(5) = & + (/ 10._plflt , 32._plflt , 12._plflt , 30._plflt , 16._plflt /) -! Process command-line arguments - call plparseopts(PL_PARSE_FULL) +! Process command-line arguments + call plparseopts(PL_PARSE_FULL) - per(1) = 10._plflt - per(2) = 32._plflt - per(3) = 12._plflt - per(4) = 30._plflt - per(5) = 16._plflt +! Ask user to specify the output device. + call plinit() -! Ask user to specify the output device. + call pladv(0) +! Ensure window has aspect ratio of one so circle is +! plotted as a circle. + call plvasp(1.0_plflt) + call plwind(0._plflt, 10._plflt, 0._plflt, 10._plflt) +! call plenv( 0._plflt, 10._plflt, 0._plflt, 10._plflt, 1, -2 ) + call plcol0(2) - call plinit() +! n.b. all theta quantities scaled by 2*pi/500 to be integers to avoid +! floating point logic problems. + theta0 = 0 + dthet = 1 - call pladv(0) -! Ensure window has aspect ratio of one so circle is -! plotted as a circle. - call plvasp(1.0_plflt) - call plwind(0._plflt, 10._plflt, 0._plflt, 10._plflt) -! call plenv( 0._plflt, 10._plflt, 0._plflt, 10._plflt, 1, -2 ) - call plcol0(2) - -! n.b. all theta quantities scaled by 2*pi/500 to be integers to avoid -! floating point logic problems. - theta0 = 0 - dthet = 1 - - do i = 0, 4 + do i = 0, 4 j = 0 x(j+1) = 5._plflt y(j+1) = 5._plflt j = j + 1 -! n.b. the theta quantities multiplied by 2*pi/500 afterward so -! in fact per is interpreted as a percentage. +! n.b. the theta quantities multiplied by 2*pi/500 afterward so +! in fact per is interpreted as a percentage. theta1 = int(theta0 + 5*per(i+1)) if (i .eq. 4) theta1 = 500 do theta = theta0, theta1, dthet - x(j+1) = 5 + 3*cos((2._plflt*pi/500._plflt)*theta) - y(j+1) = 5 + 3*sin((2._plflt*pi/500._plflt)*theta) - j = j + 1 + x(j+1) = 5 + 3*cos((2._plflt*pi/500._plflt)*theta) + y(j+1) = 5 + 3*sin((2._plflt*pi/500._plflt)*theta) + j = j + 1 enddo call plcol0(i+1) @@ -78,19 +74,17 @@ dy = 0.25_plflt * sin(just) if ((theta0 + theta1) .lt. 250 .or. & (theta0 + theta1) .gt. 750) then - just = 0._plflt + just = 0._plflt else - just = 1._plflt + just = 1._plflt endif - call plptex( x(j/2+1)+dx, y(j/2+1)+dy, 1._plflt, 0._plflt, & - just, text(i+1) ) + call plptex( x(j/2+1)+dx, y(j/2+1)+dy, 1._plflt, 0._plflt, just, text(i+1) ) theta0 = theta - dthet - enddo + enddo - call plfont(2) - call plschr( 0._plflt, 1.3_plflt) - call plptex( 5._plflt, 9._plflt, 1._plflt, 0._plflt, & - 0.5_plflt, 'Percentage of Sales' ) + call plfont(2) + call plschr( 0._plflt, 1.3_plflt) + call plptex( 5._plflt, 9._plflt, 1._plflt, 0._plflt, 0.5_plflt, 'Percentage of Sales' ) - call plend - end + call plend +end program x13f95 Modified: trunk/examples/f95/x25f.f90 =================================================================== --- trunk/examples/f95/x25f.f90 2012-01-07 11:55:17 UTC (rev 12124) +++ trunk/examples/f95/x25f.f90 2012-01-11 05:31:09 UTC (rev 12125) @@ -30,138 +30,136 @@ program x25f - use plplot - implicit none + use plplot + implicit none - integer i, j, k - integer npts - real(kind=plflt) xextreme(2,10) - real(kind=plflt) yextreme(2,10) - real(kind=plflt) x0(10) - real(kind=plflt) y0(10) + integer :: i, j, k + integer :: npts + real(kind=plflt) :: xextreme(2,10) + real(kind=plflt) :: yextreme(2,10) + real(kind=plflt) :: x0(10) + real(kind=plflt) :: y0(10) - data ( xextreme(1,i), xextreme(2,i), yextreme(1,i), yextreme(2,i), & - i=1,9) / & - -120.0_plflt, 120.0_plflt, -120.0_plflt, 120.0_plflt, & - -120.0_plflt, 120.0_plflt, 20.0_plflt, 120.0_plflt, & - -120.0_plflt, 120.0_plflt, -20.0_plflt, 120.0_plflt, & - -80.0_plflt, 80.0_plflt, -20.0_plflt, 120.0_plflt, & - -220.0_plflt, -120.0_plflt, -120.0_plflt, 120.0_plflt, & - -20.0_plflt, 20.0_plflt, -120.0_plflt, 120.0_plflt, & - -20.0_plflt, 20.0_plflt, -20.0_plflt, 20.0_plflt, & - -80.0_plflt, 80.0_plflt, -80.0_plflt, 80.0_plflt, & - 20.0_plflt, 120.0_plflt, -120.0_plflt, 120.0_plflt/ + data ( xextreme(1,i), xextreme(2,i), yextreme(1,i), yextreme(2,i), i=1,9) / & + -120.0_plflt, 120.0_plflt, -120.0_plflt, 120.0_plflt, & + -120.0_plflt, 120.0_plflt, 20.0_plflt, 120.0_plflt, & + -120.0_plflt, 120.0_plflt, -20.0_plflt, 120.0_plflt, & + -80.0_plflt, 80.0_plflt, -20.0_plflt, 120.0_plflt, & + -220.0_plflt, -120.0_plflt, -120.0_plflt, 120.0_plflt, & + -20.0_plflt, 20.0_plflt, -120.0_plflt, 120.0_plflt, & + -20.0_plflt, 20.0_plflt, -20.0_plflt, 20.0_plflt, & + -80.0_plflt, 80.0_plflt, -80.0_plflt, 80.0_plflt, & + 20.0_plflt, 120.0_plflt, -120.0_plflt, 120.0_plflt/ - npts = 0 + npts = 0 - ! Parse and process command line arguments + ! Parse and process command line arguments - call plparseopts(PL_PARSE_FULL) + call plparseopts(PL_PARSE_FULL) - ! Initialize plplot + ! Initialize plplot - call plssub(3,3) - call plinit() + call plssub(3,3) + call plinit() - do k = 1,2 - do j = 1,4 + do k = 1,2 + do j = 1,4 - if ( j .eq. 1 ) then - ! Polygon 1: a diamond - x0(1) = 0.0_plflt - y0(1) = -100.0_plflt - x0(2) = -100.0_plflt - y0(2) = 0.0_plflt - x0(3) = 0.0_plflt - y0(3) = 100.0_plflt - x0(4) = 100.0_plflt - y0(4) = 0.0_plflt - npts = 4 - endif - if ( j .eq. 2 ) then - ! Polygon 1: a diamond - reverse direction - x0(4) = 0.0_plflt - y0(4) = -100.0_plflt - x0(3) = -100.0_plflt - y0(3) = 0.0_plflt - x0(2) = 0.0_plflt - y0(2) = 100.0_plflt - x0(1) = 100.0_plflt - y0(1) = 0.0_plflt - npts = 4 - endif - if ( j .eq. 3 ) then - ! Polygon 2: a square with punctures - x0(1) = -100.0_plflt - y0(1) = -100.0_plflt - x0(2) = -100.0_plflt - y0(2) = -80.0_plflt - x0(3) = 80.0_plflt - y0(3) = 0.0_plflt - x0(4) = -100.0_plflt - y0(4) = 80.0_plflt - x0(5) = -100.0_plflt - y0(5) = 100.0_plflt - x0(6) = -80.0_plflt - y0(6) = 100.0_plflt - x0(7) = 0.0_plflt - y0(7) = 80.0_plflt - x0(8) = 80.0_plflt - y0(8) = 100.0_plflt - x0(9) = 100.0_plflt - y0(9) = 100.0_plflt - x0(10) = 100.0_plflt - y0(10) = -100.0_plflt - npts = 10 - endif - if ( j .eq. 4 ) then - ! Polygon 2: a square with punctures - reversed direction - x0(10) = -100.0_plflt - y0(10) = -100.0_plflt - x0(9) = -100.0_plflt - y0(9) = -80.0_plflt - x0(8) = 80.0_plflt - y0(8) = 0.0_plflt - x0(7) = -100.0_plflt - y0(7) = 80.0_plflt - x0(6) = -100.0_plflt - y0(6) = 100.0_plflt - x0(5) = -80.0_plflt - y0(5) = 100.0_plflt - x0(4) = 0.0_plflt - y0(4) = 80.0_plflt - x0(3) = 80.0_plflt - y0(3) = 100.0_plflt - x0(2) = 100.0_plflt - y0(2) = 100.0_plflt - x0(1) = 100.0_plflt - y0(1) = -100.0_plflt - npts = 10 - endif + select case ( j ) + case ( 1 ) ! Polygon 1: a diamond + x0(1) = 0.0_plflt + y0(1) = -100.0_plflt + x0(2) = -100.0_plflt + y0(2) = 0.0_plflt + x0(3) = 0.0_plflt + y0(3) = 100.0_plflt + x0(4) = 100.0_plflt + y0(4) = 0.0_plflt + npts = 4 - do i = 1,9 - call pladv(0) - call plvsta() - call plwind(xextreme(1,i), xextreme(2,i), & - yextreme(1,i), yextreme(2,i)) + case( 2 ) + ! Polygon 1: a diamond - reverse direction + x0(4) = 0.0_plflt + y0(4) = -100.0_plflt + x0(3) = -100.0_plflt + y0(3) = 0.0_plflt + x0(2) = 0.0_plflt + y0(2) = 100.0_plflt + x0(1) = 100.0_plflt + y0(1) = 0.0_plflt + npts = 4 - call plcol0(2) - call plbox('bc', 1.0d0, 0, 'bcnv', 10.0d0, 0) - call plcol0(1) - call plpsty(0) - if(k.eq.1) then - call plfill(x0(1:npts),y0(1:npts)) - else - call plgradient(x0(1:npts),y0(1:npts),45.d0) - endif - call plcol0(2) - call pllsty(1) - call plline(x0(1:npts),y0(1:npts)) + case( 3 ) + ! Polygon 2: a square with punctures + x0(1) = -100.0_plflt + y0(1) = -100.0_plflt + x0(2) = -100.0_plflt + y0(2) = -80.0_plflt + x0(3) = 80.0_plflt + y0(3) = 0.0_plflt + x0(4) = -100.0_plflt + y0(4) = 80.0_plflt + x0(5) = -100.0_plflt + y0(5) = 100.0_plflt + x0(6) = -80.0_plflt + y0(6) = 100.0_plflt + x0(7) = 0.0_plflt + y0(7) = 80.0_plflt + x0(8) = 80.0_plflt + y0(8) = 100.0_plflt + x0(9) = 100.0_plflt + y0(9) = 100.0_plflt + x0(10) = 100.0_plflt + y0(10) = -100.0_plflt + npts = 10 + + case( 4 ) + ! Polygon 2: a square with punctures - reversed direction + x0(10) = -100.0_plflt + y0(10) = -100.0_plflt + x0(9) = -100.0_plflt + y0(9) = -80.0_plflt + x0(8) = 80.0_plflt + y0(8) = 0.0_plflt + x0(7) = -100.0_plflt + y0(7) = 80.0_plflt + x0(6) = -100.0_plflt + y0(6) = 100.0_plflt + x0(5) = -80.0_plflt + y0(5) = 100.0_plflt + x0(4) = 0.0_plflt + y0(4) = 80.0_plflt + x0(3) = 80.0_plflt + y0(3) = 100.0_plflt + x0(2) = 100.0_plflt + y0(2) = 100.0_plflt + x0(1) = 100.0_plflt + y0(1) = -100.0_plflt + npts = 10 + end select + + do i = 1,9 + call pladv(0) + call plvsta() + call plwind(xextreme(1,i), xextreme(2,i), yextreme(1,i), yextreme(2,i)) + + call plcol0(2) + call plbox('bc', 1.0d0, 0, 'bcnv', 10.0d0, 0) + call plcol0(1) + call plpsty(0) + if(k.eq.1) then + call plfill(x0(1:npts),y0(1:npts)) + else + call plgradient(x0(1:npts),y0(1:npts),45.d0) + endif + call plcol0(2) + call pllsty(1) + call plline(x0(1:npts),y0(1:npts)) + end do end do - end do - end do - ! Don't forget to call plend() to finish off! + end do - call plend() + ! Don't forget to call plend() to finish off! + call plend end program x25f This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <arj...@us...> - 2012-01-24 05:40:04
|
Revision: 12149 http://plplot.svn.sourceforge.net/plplot/?rev=12149&view=rev Author: arjenmarkus Date: 2012-01-24 05:39:57 +0000 (Tue, 24 Jan 2012) Log Message: ----------- Restyled two small examples Modified Paths: -------------- trunk/examples/f95/x17f.f90 trunk/examples/f95/x18f.f90 Modified: trunk/examples/f95/x17f.f90 =================================================================== --- trunk/examples/f95/x17f.f90 2012-01-23 20:42:50 UTC (rev 12148) +++ trunk/examples/f95/x17f.f90 2012-01-24 05:39:57 UTC (rev 12149) @@ -1,117 +1,109 @@ -! $Id$ +! $Id$ ! -! Copyright (C) 2004 Alan W. Irwin +! Copyright (C) 2004 Alan W. Irwin ! -! This file is part of PLplot. +! This file is part of PLplot. ! -! PLplot is free software; you can redistribute it and/or modify -! it under the terms of the GNU Library General Public License as -! published by the Free Software Foundation; either version 2 of the -! License, or (at your option) any later version. +! PLplot is free software; you can redistribute it and/or modify +! it under the terms of the GNU Library General Public License as +! published by the Free Software Foundation; either version 2 of the +! License, or (at your option) any later version. ! -! PLplot is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Library General Public License for more details. +! PLplot is distributed in the hope that it will be useful, +! but WITHOUT ANY WARRANTY; without even the implied warranty of +! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +! GNU Library General Public License for more details. ! -! You should have received a copy of the GNU Library General Public -! License along with PLplot; if not, write to the Free Software -! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +! You should have received a copy of the GNU Library General Public +! License along with PLplot; if not, write to the Free Software +! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA !-------------------------------------------------------------------------- ! main program !-------------------------------------------------------------------------- - program x17f - use plplot, PI => PL_PI - implicit none - integer id1, n, nsteps - logical autoy, acc - parameter ( nsteps = 1000 ) - real(kind=plflt) y1, y2, y3, y4, ymin, ymax, xlab, ylab - real(kind=plflt) t, tmin, tmax, tjump, dt, noise - integer colbox, collab, colline(4), styline(4) - character(len=20) legline(4) +program x17f95 + use plplot, PI => PL_PI + implicit none - logical pl_errcode - character(len=80) errmsg + integer :: id1, n + integer, parameter :: nsteps = 1000 + logical :: autoy, acc + real(kind=plflt) :: y1, y2, y3, y4, ymin, ymax, xlab, ylab + real(kind=plflt) :: t, tmin, tmax, tjump, dt, noise + integer :: colbox, collab, colline(4), styline(4) + character(len=20) :: legline(4) -! Process command-line arguments - call plparseopts(PL_PARSE_FULL) + logical :: pl_errcode + character(len=80) :: errmsg -! plplot initialization +! Process command-line arguments + call plparseopts(PL_PARSE_FULL) -! If db is used the plot is much more smooth. However, because of the -! async X behaviour, one does not have a real-time scripcharter. +! plplot initialization + +! If db is used the plot is much more smooth. However, because of the +! async X behaviour, one does not have a real-time scripcharter. ! -! call plsetopt('db', '') -! call plsetopt('np', '') +! call plsetopt('db', '') +! call plsetopt('np', '') -! User sets up plot completely except for window and data -! Eventually settings in place when strip chart is created will be -! remembered so that multiple strip charts can be used simultaneously. +! User sets up plot completely except for window and data +! Eventually settings in place when strip chart is created will be +! remembered so that multiple strip charts can be used simultaneously. -! Specify some reasonable defaults for ymin and ymax -! The plot will grow automatically if needed (but not shrink) +! Specify some reasonable defaults for ymin and ymax +! The plot will grow automatically if needed (but not shrink) - ymin = -0.1_plflt - ymax = 0.1_plflt + ymin = -0.1_plflt + ymax = 0.1_plflt -! Specify initial tmin and tmax -- this determines length of window. -! Also specify maximum jump in t -! This can accomodate adaptive timesteps +! Specify initial tmin and tmax -- this determines length of window. +! Also specify maximum jump in t +! This can accomodate adaptive timesteps - tmin = 0._plflt - tmax = 10._plflt -! percentage of plot to jump - tjump = 0.3_plflt + tmin = 0._plflt + tmax = 10._plflt +! percentage of plot to jump + tjump = 0.3_plflt -! Axes options same as plbox. -! Only automatic tick generation and label placement allowed -! Eventually I'll make this fancier +! Axes options same as plbox. +! Only automatic tick generation and label placement allowed +! Eventually I'll make this fancier - colbox = 1 - collab = 3 -! pens color and line style - styline(1) = 2 - colline(1) = 2 - styline(2) = 3 - colline(2) = 3 - styline(3) = 4 - colline(3) = 4 - styline(4) = 5 - colline(4) = 5 + colbox = 1 + collab = 3 +! pens color and line style + styline = (/ 2, 3, 4, 5 /) + colline = (/ 2, 3, 4, 5 /) -! pens legend - legline(1) = 'sum' - legline(2) = 'sin' - legline(3) = 'sin*noi' - legline(4) = 'sin+noi' +! pens legend + legline = (/ 'sum ', 'sin ', 'sin*noi', 'sin+noi' /) -! legend position - xlab = 0._plflt - ylab = 0.25_plflt +! legend position + xlab = 0._plflt + ylab = 0.25_plflt -! autoscale y - autoy = .true. -! don't scrip, accumulate - acc = .true. +! autoscale y + autoy = .true. +! don't scrip, accumulate + acc = .true. -! Initialize plplot +! Initialize plplot - call plinit() + call plinit() - call pladv(0) - call plvsta() + call pladv(0) + call plvsta() -! Register our error variables with PLplot -! From here on, we're handling all errors here +! Register our error variables with PLplot +! From here on, we're handling all errors here -! TODO: call plsError(&pl_errcode, errmsg) +! TODO: call plsError(&pl_errcode, errmsg) - call plstripc(id1, 'bcnst', 'bcnstv', & + call plstripc(id1, 'bcnst', 'bcnstv', & tmin, tmax, tjump, ymin, ymax, & xlab, ylab, & autoy, acc, & @@ -119,37 +111,37 @@ colline, styline, legline, & 't', '', 'Strip chart demo') - pl_errcode = .false. - if ( pl_errcode ) then + pl_errcode = .false. + if ( pl_errcode ) then write(*,*) errmsg stop - endif + endif -! Let plplot handle errors from here on +! Let plplot handle errors from here on -! TODO: call plsError(NULL, NULL) +! TODO: call plsError(NULL, NULL) -! autoscale y - autoy = .false. -! accumulate - acc = .true. +! autoscale y + autoy = .false. +! accumulate + acc = .true. -! This is to represent a loop over time -! Let's try a random walk process +! This is to represent a loop over time +! Let's try a random walk process - y1 = 0.0_plflt - y2 = 0.0_plflt - y3 = 0.0_plflt - y4 = 0.0_plflt - dt = 0.1_plflt + y1 = 0.0_plflt + y2 = 0.0_plflt + y3 = 0.0_plflt + y4 = 0.0_plflt + dt = 0.1_plflt - do n = 0,nsteps-1 -! wait a little (10 ms) to simulate time elapsing. -! g77 sleep has resolution of 1 sec so the call below is commented out -! because it is like watching paint dry. In any case, -! I like the resulting speedier output when -! you drop sleep altogether from this loop. -! call sleep(1) + do n = 0,nsteps-1 +! wait a little (10 ms) to simulate time elapsing. +! g77 sleep has resolution of 1 sec so the call below is commented out +! because it is like watching paint dry. In any case, +! I like the resulting speedier output when +! you drop sleep altogether from this loop. +! call sleep(1) t = dble(n) * dt noise = plrandd() - 0.5_plflt @@ -158,27 +150,27 @@ y3 = y2 * noise y4 = y2 + noise/3._plflt -! There is no need for all pens to have the same number of -! points or beeing equally time spaced. +! There is no need for all pens to have the same number of +! points or beeing equally time spaced. if ( mod(n,2) .ne. 0 ) then - call plstripa(id1, 0, t, y1) + call plstripa(id1, 0, t, y1) endif if ( mod(n,3) .ne. 0 ) then - call plstripa(id1, 1, t, y2) + call plstripa(id1, 1, t, y2) endif if ( mod(n,4) .ne. 0 ) then - call plstripa(id1, 2, t, y3) + call plstripa(id1, 2, t, y3) endif if ( mod(n,5) .ne. 0 ) then - call plstripa(id1, 3, t, y4) + call plstripa(id1, 3, t, y4) endif -! use_ double buffer (-db on command line) +! use_ double buffer (-db on command line) ! call pleop() - enddo + enddo -! Destroy strip chart and it's memory +! Destroy strip chart and it's memory - call plstripd(id1) - call plend() - end + call plstripd(id1) + call plend() +end program x17f95 Modified: trunk/examples/f95/x18f.f90 =================================================================== --- trunk/examples/f95/x18f.f90 2012-01-23 20:42:50 UTC (rev 12148) +++ trunk/examples/f95/x18f.f90 2012-01-24 05:39:57 UTC (rev 12149) @@ -1,173 +1,164 @@ -! $Id$ +! $Id$ ! -! Copyright (C) 2004 Alan W. Irwin +! Copyright (C) 2004 Alan W. Irwin ! -! This file is part of PLplot. +! This file is part of PLplot. ! -! PLplot is free software; you can redistribute it and/or modify -! it under the terms of the GNU Library General Public License as -! published by the Free Software Foundation; either version 2 of the -! License, or (at your option) any later version. +! PLplot is free software; you can redistribute it and/or modify +! it under the terms of the GNU Library General Public License as +! published by the Free Software Foundation; either version 2 of the +! License, or (at your option) any later version. ! -! PLplot is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Library General Public License for more details. +! PLplot is distributed in the hope that it will be useful, +! but WITHOUT ANY WARRANTY; without even the implied warranty of +! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +! GNU Library General Public License for more details. ! -! You should have received a copy of the GNU Library General Public -! License along with PLplot; if not, write to the Free Software -! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +! You should have received a copy of the GNU Library General Public +! License along with PLplot; if not, write to the Free Software +! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA !-------------------------------------------------------------------------- -! main +! main ! -! Does a series of 3-d plots for a given data set, with different -! viewing options in each plot. +! Does a series of 3-d plots for a given data set, with different +! viewing options in each plot. !-------------------------------------------------------------------------- - program x18f - use plplot, PI => PL_PI - implicit none +program x18f95 + use plplot, PI => PL_PI, TWOPI => PL_TWOPI + implicit none - integer NPTS - parameter ( NPTS = 1000 ) + integer, parameter :: NPTS = 1000 - integer i, k - real(kind=plflt), dimension(NPTS) :: x, y, z, r - character(len=80) title + integer :: i, k + real(kind=plflt), dimension(NPTS) :: x, y, z, r + character(len=80) :: title - integer opt(4) - real(kind=plflt) alt(4) - real(kind=plflt) az(4) - data opt / 1, 0, 1, 0 / - data alt / 20.0_plflt, 35.0_plflt, 50.0_plflt, 65.0_plflt / - data az / 30.0_plflt, 40.0_plflt, 50.0_plflt, 60.0_plflt / + integer :: opt(4) = (/ 1, 0, 1, 0 /) + real(kind=plflt) :: alt(4) = (/ 20.0_plflt, 35.0_plflt, 50.0_plflt, 65.0_plflt /) + real(kind=plflt) :: az(4) = (/ 30.0_plflt, 40.0_plflt, 50.0_plflt, 60.0_plflt /) - integer, dimension(NPTS) :: ia = (/(i,i=1,NPTS)/) + integer, dimension(NPTS) :: ia = (/(i,i=1,NPTS)/) -! Process command-line arguments - call plparseopts(PL_PARSE_FULL) +! Process command-line arguments + call plparseopts(PL_PARSE_FULL) -! Initialize plplot +! Initialize plplot - call plinit() + call plinit() - do k = 1, 4 + do k = 1, 4 call test_poly(k, alt(k), az(k)) - enddo + enddo -! From the mind of a sick and twisted physicist... +! From the mind of a sick and twisted physicist... - z = -1._plflt + 2._plflt * dble (ia-1) / dble (NPTS) + z = -1._plflt + 2._plflt * dble (ia-1) / dble (NPTS) -! Pick one ... +! Pick one ... -! r = 1. - dble (ia-1) / dble (NPTS) - r = z +! r = 1. - dble (ia-1) / dble (NPTS) + r = z - x = r * cos( 2._plflt * PI * 6._plflt * dble (ia-1) / dble (NPTS) ) - y = r * sin( 2._plflt * PI * 6._plflt * dble (ia-1) / dble (NPTS) ) + x = r * cos( 2._plflt * PI * 6._plflt * dble (ia-1) / dble (NPTS) ) + y = r * sin( 2._plflt * PI * 6._plflt * dble (ia-1) / dble (NPTS) ) - do k = 1, 4 + do k = 1, 4 call pladv(0) call plvpor(0.0_plflt, 1.0_plflt, 0.0_plflt, 0.9_plflt) call plwind(-1.0_plflt, 1.0_plflt, -0.9_plflt, 1.1_plflt) call plcol0(1) call plw3d(1.0_plflt, 1.0_plflt, 1.0_plflt, & - -1.0_plflt, 1.0_plflt, -1.0_plflt, & - 1.0_plflt, -1.0_plflt, 1.0_plflt, & - alt(k), az(k)) + -1.0_plflt, 1.0_plflt, -1.0_plflt, & + 1.0_plflt, -1.0_plflt, 1.0_plflt, & + alt(k), az(k)) call plbox3('bnstu', 'x axis', 0.0_plflt, 0, & - 'bnstu', 'y axis', 0.0_plflt, 0, & - 'bcdmnstuv', 'z axis', 0.0_plflt, 0) + 'bnstu', 'y axis', 0.0_plflt, 0, & + 'bcdmnstuv', 'z axis', 0.0_plflt, 0) call plcol0(2) if ( opt(k).gt. 0 ) then - call plline3(x, y, z) + call plline3(x, y, z) else - !U+22C5 DOT OPERATOR. - call plstring3( x, y, z, "⋅" ) + !U+22C5 DOT OPERATOR. + call plstring3( x, y, z, "⋅" ) endif call plcol0(3) - write( title, '(a,i2,a,i2)') & - '#frPLplot Example 18 - Alt=', nint(alt(k)), & - ', Az=', nint(az(k)) - call plmtex('t', 1.0_plflt, 0.5_plflt, 0.5_plflt, & - title) - enddo + write( title, '(a,i2,a,i2)') '#frPLplot Example 18 - Alt=', nint(alt(k)), ', Az=', nint(az(k)) + call plmtex('t', 1.0_plflt, 0.5_plflt, 0.5_plflt, title) + enddo - call plend() - end + call plend() +contains - subroutine test_poly(k, alt, az) - use plplot, PI => PL_PI, TWOPI => PL_TWOPI - implicit none - integer k - real(kind=plflt) alt, az +subroutine test_poly(k, alt, az) + integer :: k + real(kind=plflt) :: alt, az - real(kind=plflt) x(5), y(5), z(5) - integer i, j - logical draw(4,4) - DATA draw / & - .true., .true., .true., .true., & - .true., .false., .true., .false., & - .false., .true., .false., .true., & - .true., .true., .false., .false. / - integer, dimension(0:20) :: ia = (/(j,j=0,20)/) - real(kind=plflt), dimension(0:20) :: theta, phi - theta = TWOPI * ia /20._plflt - phi = PI * ia / 20.1_plflt + real(kind=plflt) :: x(5), y(5), z(5) + integer :: i, j + logical :: draw(4,4) = & + reshape( & + (/ .true., .true., .true., .true., & + .true., .false., .true., .false., & + .false., .true., .false., .true., & + .true., .true., .false., .false. /), (/4,4/) ) + integer, dimension(0:20) :: ia = (/(j,j=0,20)/) + real(kind=plflt), dimension(0:20) :: theta, phi - call pladv(0) - call plvpor(0.0_plflt, 1.0_plflt, 0.0_plflt, 0.9_plflt) - call plwind(-1.0_plflt, 1.0_plflt, -0.9_plflt, 1.1_plflt) - call plcol0(1) - call plw3d(1.0_plflt, 1.0_plflt, 1.0_plflt, & + theta = TWOPI * ia /20._plflt + phi = PI * ia / 20.1_plflt + + call pladv(0) + call plvpor(0.0_plflt, 1.0_plflt, 0.0_plflt, 0.9_plflt) + call plwind(-1.0_plflt, 1.0_plflt, -0.9_plflt, 1.1_plflt) + call plcol0(1) + call plw3d(1.0_plflt, 1.0_plflt, 1.0_plflt, & -1.0_plflt, 1.0_plflt, -1.0_plflt, & 1.0_plflt, -1.0_plflt, 1.0_plflt, & alt, az) - call plbox3('bnstu', 'x axis', 0.0_plflt, 0, & + call plbox3('bnstu', 'x axis', 0.0_plflt, 0, & 'bnstu', 'y axis', 0.0_plflt, 0, & 'bcdmnstuv', 'z axis', 0.0_plflt, 0) - call plcol0(2) + call plcol0(2) -! x = r sin(phi) cos(theta) -! y = r sin(phi) sin(theta) -! z = r cos(phi) -! r = 1 :=) +! x = r sin(phi) cos(theta) +! y = r sin(phi) sin(theta) +! z = r cos(phi) +! r = 1 :=) - do i=0,19 + do i=0,19 do j=0,19 - x(1) = sin( phi(j) ) * cos( theta(i) ) - y(1) = sin( phi(j) ) * sin( theta(i) ) - z(1) = cos( phi(j) ) + x(1) = sin( phi(j) ) * cos( theta(i) ) + y(1) = sin( phi(j) ) * sin( theta(i) ) + z(1) = cos( phi(j) ) - x(2) = sin( phi(j+1) ) * cos( theta(i) ) - y(2) = sin( phi(j+1) ) * sin( theta(i) ) - z(2) = cos( phi(j+1) ) + x(2) = sin( phi(j+1) ) * cos( theta(i) ) + y(2) = sin( phi(j+1) ) * sin( theta(i) ) + z(2) = cos( phi(j+1) ) - x(3) = sin( phi(j+1) ) * cos( theta(i+1) ) - y(3) = sin( phi(j+1) ) * sin( theta(i+1) ) - z(3) = cos( phi(j+1) ) + x(3) = sin( phi(j+1) ) * cos( theta(i+1) ) + y(3) = sin( phi(j+1) ) * sin( theta(i+1) ) + z(3) = cos( phi(j+1) ) - x(4) = sin( phi(j) ) * cos( theta(i+1) ) - y(4) = sin( phi(j) ) * sin( theta(i+1) ) - z(4) = cos( phi(j) ) + x(4) = sin( phi(j) ) * cos( theta(i+1) ) + y(4) = sin( phi(j) ) * sin( theta(i+1) ) + z(4) = cos( phi(j) ) - x(5) = sin( phi(j) ) * cos( theta(i) ) - y(5) = sin( phi(j) ) * sin( theta(i) ) - z(5) = cos( phi(j) ) + x(5) = sin( phi(j) ) * cos( theta(i) ) + y(5) = sin( phi(j) ) * sin( theta(i) ) + z(5) = cos( phi(j) ) - call plpoly3(x, y, z, draw(:,k), .true.) + call plpoly3(x, y, z, draw(:,k), .true.) enddo - enddo + enddo - call plcol0(3) - call plmtex('t', 1.0_plflt, 0.5_plflt, 0.5_plflt, & - 'unit radius sphere' ) - return - end + call plcol0(3) + call plmtex('t', 1.0_plflt, 0.5_plflt, 0.5_plflt, 'unit radius sphere' ) +end subroutine test_poly +end program x18f95 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |