SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
choldc.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 SUBROUTINE choldc(N,A,P)
6 
7 USE modi_abor1_sfx
8 
9 USE yomhook ,ONLY : lhook, dr_hook
10 USE parkind1 ,ONLY : jprb
11 
12  IMPLICIT NONE
13 
14  INTEGER, INTENT(IN) :: n
15  REAL, DIMENSION(N,N), INTENT(INOUT) :: a
16  REAL, DIMENSION(N), INTENT(OUT) :: p
17  INTEGER :: i
18  REAL :: summ
19  REAL(KIND=JPRB) :: zhook_handle
20 
21  IF (lhook) CALL dr_hook('CHOLDC',0,zhook_handle)
22  DO i=1,n
23 
24  summ = a(i,i)- dot_product(a(i,1:i-1),a(i,1:i-1))
25 
26  IF (summ <= 0.0) CALL abor1_sfx("CHOLDC:ERROR IN CHOLDC")
27 
28  p(i) = sqrt(summ)
29  a(i+1:n,i) = (a(i,i+1:n) - matmul(a(i+1:n,1:i-1),a(i,1:i-1)))/p(i)
30 
31  ENDDO
32 
33  IF (lhook) CALL dr_hook('CHOLDC',1,zhook_handle)
34 
35 END SUBROUTINE choldc
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:6
subroutine choldc(N, A, P)
Definition: choldc.F90:5