source: TOOLS/MOZAIC/src/POLY/u_graph.f90 @ 3328

Last change on this file since 3328 was 3326, checked in by omamce, 7 years ago

O.M. : Utility to generate interpolatio weights for OASIS-MCT

File size: 5.2 KB
Line 
1MODULE u_graph
2   !---------------------------------------------------------------------
3   !- module d'interface graphique
4   !---------------------------------------------------------------------
5   USE poly_types
6   IMPLICIT NONE
7   !-
8   INTEGER,SAVE :: wkid1 = 1,wkcx1 = 70,wktp1 = 1110,wkca1
9   INTEGER,SAVE :: ulerr = 70
10   !---------------------------------------------------------------------
11CONTAINS
12   !-
13   SUBROUTINE g_deb   (vxmin,vxmax,vymin,vymax)
14      !---------------------------------------------------------------------
15      !- debut de graphique
16      !---------------------------------------------------------------------
17      REAL (kind=rp) :: vxmin,vxmax,vymin,vymax
18      !-
19      INTEGER :: pgnt,dcunit,dcdxp,dcdyp,ierr
20      INTEGER,DIMENSION(13) :: iasf = (/ 1,1,1,1,1,1,1,1,1,1,1,1,1 /)
21      REAL (kind=rp),DIMENSION(4) :: wkvp,sndc
22      REAL (kind=rp) :: ddd,dcdxm,dcdym
23      REAL (kind=rp) :: dcdx,dcdy,gx,gy
24      REAL (kind=rp) :: xmi,xms,ymi,yms
25      !---------------------------------------------------------------------
26      !- extrema
27      ddd = vxmax-vxmin; xmi = vxmin-0.1_rp*ddd; xms = vxmax+0.1_rp*ddd;
28      ddd = vymax-vymin; ymi = vymin-0.1_rp*ddd; yms = vymax+0.1_rp*ddd;
29      !- ouverture du fichier des messages d'erreur
30      OPEN    (unit=ulerr,file='dphierr', &
31         status='unknown',form='formatted')
32      !- ouverture de gks
33      CALL gopks   (ulerr,-1)
34      !- obtention de la categorie du poste de travail
35      CALL gqwkca  (wktp1,ierr,wkca1)
36      !- ouverture du poste de travail
37      CALL gopwk   (wkid1,wkcx1,wktp1)
38      !- obtention de la surface maximale d'affichage
39      CALL gqdsp   (wktp1,ierr,dcunit,dcdxm,dcdym,dcdxp,dcdyp)
40      IF (dcunit == 1) THEN
41         dcdxm = dcdxp; dcdym = dcdyp;
42      END IF
43      !- activation du poste de travail
44      CALL gacwk   (wkid1)
45      !- definition des fenetres et clotures
46      pgnt = 1
47      gx   = xms-xmi; gy   = yms-ymi;
48      CALL gswn    (pgnt,xmi,xms,ymi,yms)
49      sndc(1:4) = (/ 0._rp, MIN(1.,gx/gy), 0._rp, MIN(1.,gy/gx) /)
50      CALL gsvp    (pgnt,sndc(1),sndc(2),sndc(3),sndc(4))
51      dcdx = dcdxm*(1._rp-MIN(1._rp,(dcdym*gx)/(dcdxm*gy)))/2._rp
52      dcdy = dcdym*(1._rp-MIN(1._rp,(dcdxm*gy)/(dcdym*gx)))/2._rp
53      wkvp(1:4) = (/ dcdx, (dcdxm-dcdx), dcdy, (dcdym-dcdy) /)
54      CALL gswkwn  (wkid1,sndc(1),sndc(2),sndc(3),sndc(4))
55      CALL gswkvp  (wkid1,wkvp(1),wkvp(2),wkvp(3),wkvp(4))
56      !- activation de la transformation de normalisation
57      CALL gselnt  (pgnt)
58      CALL gsvpip  (0,pgnt,1)
59      CALL gsds    (wkid1,0,1)
60      !- definition du type des attributs
61      CALL gsasf   (iasf)
62      !----------------------
63   END SUBROUTINE g_deb
64   !-
65   SUBROUTINE g_fin
66      !---------------------------------------------------------------------
67      !- fin de graphique
68      !---------------------------------------------------------------------
69      !- desactivation et fermeture du poste de travail
70      CALL gdawk   (wkid1)
71      CALL gclwk   (wkid1)
72      !- fermeture de gks
73      CALL gclks
74      !- fermeture du fichier des messages d'erreur
75      CLOSE  (unit=ulerr)
76      !----------------------
77   END SUBROUTINE g_fin
78   !-
79   SUBROUTINE g_fix
80      !---------------------------------------------------------------------
81      !- fixation du graphique
82      !---------------------------------------------------------------------
83      INTEGER :: istat,ichnb
84      REAL (kind=rp)   :: pxi,pyi
85      !---------------------------------------------------------------------
86      IF (wkca1.EQ.2) THEN
87         CALL grqlc   (wkid1,1,istat,ichnb,pxi,pyi)
88      END IF
89      !----------------------
90   END SUBROUTINE g_fix
91   !-
92   SUBROUTINE g_pln   (np,px,py,il,ic)
93      !---------------------------------------------------------------------
94      !- affichage de polyligne
95      !---------------------------------------------------------------------
96      INTEGER :: np,il,ic
97      REAL (kind=rp), DIMENSION(*) :: px,py
98      !---------------------------------------------------------------------
99      CALL gsln    (il)
100      CALL gsplci  (ic)
101      CALL gpl     (np,px,py)
102      !----------------------
103   END SUBROUTINE g_pln
104   !-
105   SUBROUTINE g_pmk   (np,px,py,ip,ic)
106      !---------------------------------------------------------------------
107      !- affichage de polymarque
108      !---------------------------------------------------------------------
109      INTEGER :: np,ip,ic
110      REAL (kind=rp), DIMENSION(*) :: px,py
111      !---------------------------------------------------------------------
112      !* call gsmksc  (1.)
113      CALL gsmk    (ip)
114      CALL gspmci  (ic)
115      CALL gpm     (np,px,py)
116      !----------------------
117   END SUBROUTINE g_pmk
118   !-
119   SUBROUTINE g_pol   (nv,vx,vy,is,ic)
120      !---------------------------------------------------------------------
121      !- affichage de polygone
122      !---------------------------------------------------------------------
123      INTEGER :: nv,is,ic
124      REAL (kind=rp), DIMENSION(*) :: vx,vy
125      !---------------------------------------------------------------------
126      CALL gsfais  (is)
127      CALL gsfaci  (ic)
128      CALL gfa     (nv,vx,vy)
129      !----------------------
130   END SUBROUTINE g_pol
131   !--------------------
132END MODULE u_graph
Note: See TracBrowser for help on using the repository browser.