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.
zdf.matrixsolver.h90 in branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/ZDF – NEMO

source: branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/ZDF/zdf.matrixsolver.h90 @ 2281

Last change on this file since 2281 was 2281, checked in by smasson, 14 years ago

set proper svn properties to all files...

  • Property svn:keywords set to Id
File size: 1.9 KB
Line 
1!!
2!!         ZDF.MATRIXSOLVER
3!!       ********************
4!!
5!! Matrix inversion
6!!----------------------------------------------------------------------
7!   solve m.x = y  where m is a tri diagonal matrix ( jpk*jpk )
8!
9!        ( zwd1 zws1   0    0    0  )( zwx1 ) ( zwy1 )
10!        ( zwi2 zwd2 zws2   0    0  )( zwx2 ) ( zwy2 )
11!        (  0   zwi3 zwd3 zws3   0  )( zwx3 )=( zwy3 )
12!        (        ...               )( ...  ) ( ...  )
13!        (  0    0    0   zwik zwdk )( zwxk ) ( zwyk )
14!
15!   m is decomposed in the product of an upper and lower triangular
16!   matrix
17!   The 3 diagonal terms are in 2d arrays: zwd, zws, zwi
18!   The second member is in 2d array zwy
19!   The solution is in 2d array zwx
20!   The 2d arry zwt and zwz are work space arrays
21!
22!   N.B. the starting vertical index (ikst) is equal to 1 except for
23!   the resolution of tke matrix where surface tke value is prescribed
24!   so that ikstrt=2.
25!!----------------------------------------------------------------------
26!!  OPA 9.0 , LOCEAN-IPSL (2005)
27!! $Id$
28!! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt
29!!----------------------------------------------------------------------
30
31      ikstp1 = ikst + 1
32      ikenm2 = jpk - 2
33      DO ji = 2, jpim1
34         zwt(ji,ikst) = zwd(ji,ikst)
35      END DO
36      DO jk = ikstp1, jpkm1
37         DO ji = 2, jpim1
38            zwt(ji,jk) = zwd(ji,jk) - zwi(ji,jk) * zws(ji,jk-1) / zwt(ji,jk-1)
39         END DO
40      END DO
41      DO ji = 2, jpim1
42         zwz(ji,ikst) = zwy(ji,ikst)
43      END DO
44      DO jk = ikstp1, jpkm1
45         DO ji = 2, jpim1
46            zwz(ji,jk) = zwy(ji,jk) - zwi(ji,jk) / zwt(ji,jk-1) * zwz(ji,jk-1)
47         END DO
48      END DO
49      DO ji = 2, jpim1
50         zwx(ji,jpkm1) = zwz(ji,jpkm1) / zwt(ji,jpkm1)
51      END DO
52      DO jk = ikenm2, ikst, -1
53         DO ji = 2, jpim1
54            zwx(ji,jk) =( zwz(ji,jk) - zws(ji,jk) * zwx(ji,jk+1) ) / zwt(ji,jk)
55         END DO
56      END DO
57     
Note: See TracBrowser for help on using the repository browser.