c c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c . . c . copyright (c) 1998 by UCAR . c . . c . University Corporation for Atmospheric Research . c . . c . all rights reserved . c . . c . . c . SPHEREPACK . c . . c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c c ... visgeo.f c c contains documentation and code for subroutine visgeo c c SUBROUTINE VISGEO (M,IDP,JDP,X,Y,Z,H,EYER,EYELAT,EYELON, c 1 WORK,LWORK,IWORK,LIWORK,IERROR) c c subroutine visgeo will display a function on the sphere c as a solid. ie. as a "lumpy" sphere. visgeo calls subroutine c vsurf to produce the visible surface rendering. X, Y, and Z c are the points on an icosahedral geodesic computed by c subroutine geopts available in spherepack. c c requires routines visgeo1 ctos stoc vsurf vsurf1 c prjct box c c visgeo uses the ncar graphics package. c compile with: ncargf77 (all programs above) c c execute with: a.out c c on screen display with: ctrans -d x11 gmeta c c print with: ctrans -d ps.color gmeta > gmeta.ps c lpr -P(your printer) gmeta.ps c c c input parameters c c m the number of points on one edge of the icosahedron c c idp,jdp the first and second dimensions of the three c dimensional arrays x, y, z, and h. c c x,y,z the coordinates of the geodesic points on c the unit sphere computed by subroutine geopts. c the indices are defined on the unfolded c icosahedron as follows for the case m=3 c c north pole c c (5,1) 0 l c i (4,1) (5,2) a (repeated for c (3,1) (4,2) (5,3) theta1 t k=2,3,4,5 in c (2,1) (3,2) (4,3) i --> c (1,1) (2,2) (3,3) theta2 t the longitudinal c (1,2) (2,3) u direction) c (1,3) pi d c j e c south pole c c total number of vertices is 10*(m-1)**2+2 c total number of triangles is 20*(m-1)**2 c c h a three dimensional array that contains the discrete c function to be displayed. h(i,j,k) is the distance from c the center of the sphere to the "lumpy" surface at the c point [x(i,j,k),y(i,j,k),z(i,j,k)] on the unit sphere. c c eyer the distance from the center of the sphere to the eye. c c eyelat the colatitudinal coordinate of the eye (in degrees). c c eyelon the longitudinal coordinate of the eye (in degrees). c c idp the first dimension of the array h as it appears in c the program that calls visgeo c c jdp the second dimension of the array h as it appears in c the program that calls visgeo c c work a real work array c c lwork the dimension of the array work as it appears in the c program that calls visgeo. lwork must be at least c 480*(m-1)**2. c c iwork an integer work array c c liwork the dimension of the array iwork as it appears in the c program that calls visgeo. liwork must be at least c 140*(m-1)**2. c c input parameter c c ierror = 0 no error c = 1 h(i,j,k) is less than zero for some i,j,k. c = 2 eyer is less than h(i,j,k) for some i,k,k. c = 3 lwork is less than 480*(m-1)**2 c = 4 liwork is less than 140*(m-1)**2 c