New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
sol_oce.F90 in trunk/NEMO/OPA_SRC/SOL – NEMO

source: trunk/NEMO/OPA_SRC/SOL/sol_oce.F90 @ 3

Last change on this file since 3 was 3, checked in by opalod, 20 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.3 KB
Line 
1MODULE sol_oce
2   !!======================================================================
3   !!                    ***  MODULE  sol_oce  ***
4   !! Ocean solver :  solver variables defined in memory
5   !!=====================================================================
6   !!
7   !! ** Purpose :   Define in memory solver variables
8   !!
9   !! History :
10   !!   9.0  !  02-11  (G. Madec)  F90: Free form and module
11   !!----------------------------------------------------------------------
12   !!  OPA 9.0 , LODYC-IPSL (2003)
13   !!----------------------------------------------------------------------
14   !! * Modules used
15   USE par_oce         ! ocean parameters
16
17   IMPLICIT NONE
18
19   !!----------------------------------------------------------------------
20   !! elliptic solver: SOR, PCG or FETI
21   !! ---------------------------------------------------
22   INTEGER  ::              & !!! namsol   elliptic solver / island / free surface
23      nsolv =    1 ,        &  ! = 1/2/3 type of elliptic solver
24      nmax  =  800 ,        &  ! maximum of iterations for the solver
25      nmisl = 4000             ! maximum pcg iterations for island
26     
27   REAL(wp) ::              & !!! namsol   elliptic solver / island / free surface
28      eps    = 1.e-6_wp ,   &  ! absolute precision of the solver
29      sor    = 1.76_wp  ,   &  ! optimal coefficient for sor solver
30      epsisl = 1.e-10_wp,   &  ! absolute precision on stream function solver
31      rnu    = 1.0_wp          ! strength of the additional force used in free surface
32
33   INTEGER  ::   &
34      ncut,         &  ! indicator of solver convergence
35      niter            ! number of iteration done by the solver
36
37   REAL(wp) ::   &
38      epsr,         &  ! relative precision for SOR & PCG solvers
39      epsilo,       &  ! precision for the FETI solver
40      rnorme, res,  &  ! intermediate modulus, solver residu
41      alph,         &  ! coefficient  =(gcr,gcr)/(gcx,gccd)
42      beta,         &  ! coefficient  =(rn+1,rn+1)/(rn,rn)
43      radd,         &  ! coefficient  =(gccd,gcdes)
44      rr               ! coefficient  =(rn,rn)
45
46   REAL(wp), DIMENSION(jpi,jpj,4) ::   &
47      gcp              ! barotropic matrix extra-diagonal elements
48
49   REAL(wp), DIMENSION(jpi,jpj) ::   &
50      gcx, gcxb,    &  ! now, before solution of the elliptic equation
51      gcdprc,       &  ! inverse diagonal preconditioning matrix
52      gcdmat,       &  ! diagonal preconditioning matrix
53      gcb,          &  ! second member of the barotropic linear system
54      gcr,          &  ! residu =b-a.x
55      gcdes,        &  ! vector descente
56      gccd             ! vector such that ca.gccd=a.d (ca-1=gcdprc)
57
58#if defined key_feti
59   !!----------------------------------------------------------------------
60   !!   'key_feti' :                                            FETI solver
61   !!----------------------------------------------------------------------
62   !!      noeuds           : total number of nodes for a subdomnain
63   !!      ninterf          : neighbour subdomain number
64   !!      nni              : interface point number
65   !!      ndvois()         : neighbour subdomain list
66   !!      maplistin()      : node pointer at each interface
67   !!      malistin()       : concatened list of interface nodes
68
69   INTEGER :: nim,nxm,   &
70       malxm,malim,malxmax,malimax,   &
71       nifmat,njfmat,nelem,npe,matopo,   &
72       noeuds,nmorse,maan,   &
73       ninterf,ninterfc,nni,nnic,nnih,nnitot,ndir,   &
74       mandvois,mandvoisc,   &
75       maplistin,maplistih,malistin,   &
76       malisdir,npblo,mablo,ndlblo,ndkerep,   &
77       malisblo,mansp,ndimax,   &
78       miax,may,maz,mapoids,   &
79       nmaxd,mjj0,nitmax,ntest,   &
80       mabitw,mautilu,malambda,mag,mamg,mapg,mawj,madwj,madwwj,   &
81       magh,maw,madw,   &
82       mautil,mav,madia,mabufin,mabufout,mawork,maae,magamm,   &
83       maxnul,maynul,numit0ete,nitmaxete,maeteg,maeteag,   &
84       maeted,maetead,maeteadd,maetegamm,maetev,maetew,   &
85       madwork
86
87   INTEGER :: mfet(jpi*jpj+2*jpi+2*jpj+51)
88
89   REAL(wp) ::  wfeti(jpj*jpi*jpi+13*jpi*jpj+19*(jpi+jpj)   &
90       +4*jpnij+33   &
91       +2*(jpi+jpj)*(jpnij-jpni)*jpi   &
92       +2*(jpi+jpj)*(jpnij-jpnj+jperio)*jpj   &
93       +3*(jpnij-jpni)*jpi   &
94       +3*(jpnij-jpnj+jperio)*jpj) 
95
96   REAL(wp) ::   res2, rcompt
97
98#endif
99
100   !!----------------------------------------------------------------------
101END MODULE sol_oce
Note: See TracBrowser for help on using the repository browser.