Changeset 923


Ignore:
Timestamp:
06/19/19 16:06:19 (5 years ago)
Author:
dubos
Message:

devel : really fix bug in tridiagonal solver for vertical diffusion in Venus test case

File:
1 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/devel/src/initial/etat0_venus.f90

    r911 r923  
    182182    END DO 
    183183    ! Back substitution : 
    184     ! x(i) = D(i)-C(i+1)x(i+1), x(llm)=D(llm) 
     184    ! x(i) = D(i)-C(i)x(i+1), x(llm)=D(llm) 
    185185    !DIR$ SIMD 
    186186    DO ij=1,ngrid 
     
    193193       !DIR$ SIMD 
    194194       DO ij=1,ngrid 
    195           xu(ij,l) = xu(ij,l) - C(ij,l+1)*xu(ij,l+1) 
    196           xv(ij,l) = xv(ij,l) - C(ij,l+1)*xv(ij,l+1) 
     195          xu(ij,l) = xu(ij,l) - C(ij,l)*xu(ij,l+1) 
     196          xv(ij,l) = xv(ij,l) - C(ij,l)*xv(ij,l+1) 
    197197          du(ij,l) = (xu(ij,l)-u(ij,l))/dt_phys 
    198198          dv(ij,l) = (xv(ij,l)-v(ij,l))/dt_phys 
    199199       END DO 
    200200    END DO 
     201 
     202    IF(.FALSE.) THEN 
     203       ! check correctness of solution of tridiagonal problem 
     204       PRINT *, 'Max 1 residual of tridiagonal solver', MAXVAL(ABS(Ru)) 
     205       DO l = 2,llm-1 
     206          !DIR$ SIMD 
     207          DO ij=1,ngrid 
     208             Ru(ij,l) = Ru(ij,l) - B(ij,l)*xu(ij,l) + A(ij,l)*xu(ij,l-1) + A(ij,l+1)*xu(ij,l+1) 
     209          END DO 
     210       END DO 
     211       DO ij=1,ngrid 
     212          Ru(ij,1) = Ru(ij,1) - B(ij,1)*xu(ij,1) + A(ij,2)*xu(ij,2) 
     213          Ru(ij,llm) = Ru(ij,llm) - B(ij,llm)*xu(ij,llm) + A(ij,llm)*xu(ij,llm-1) 
     214       END DO 
     215       PRINT *, 'Max 2 residual of tridiagonal solver', MAXVAL(ABS(Ru)) 
     216    END IF 
     217 
    201218    ! bottom friction + thermal relaxation 
    202219    du(:,1)=du(:,1)-kfrict*u(:,1) 
Note: See TracChangeset for help on using the changeset viewer.