- Timestamp:
- Mar 4, 2026, 8:01:15 AM (2 weeks ago)
- Location:
- trunk/LMDZ.GENERIC
- Files:
-
- 4 edited
- 1 moved
-
changelog.txt (modified) (1 diff)
-
libf/phygeneric/rad_correlatedk_fluxes_solver_stellar.F (modified) (1 diff)
-
libf/phygeneric/rad_correlatedk_fluxes_solver_thermal.F (modified) (1 diff)
-
libf/phygeneric/rad_tridiagonal_matrix_solver.F (modified) (4 diffs)
-
libf/phygeneric/util_tridiagonal_matrix_solver.F90 (moved) (moved from trunk/LMDZ.GENERIC/libf/phygeneric/dtridgl.F) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.GENERIC/changelog.txt
r4083 r4097 2197 2197 and then broadcast the information (works for both MPI and OpenMP). 2198 2198 2199 == 04/03/2026 == EM 2200 Code tidying: turn dtridgl.F into util_tridiagonal_matrix_solver.F90, and also 2201 turn rad_tridiagonal_matrix_solver.F into a module. 2202 -
trunk/LMDZ.GENERIC/libf/phygeneric/rad_correlatedk_fluxes_solver_stellar.F
r4077 r4097 45 45 46 46 use radinc_h, only: L_TAUMAX, L_NLAYRAD, L_NLEVRAD, L_LEVELS 47 use rad_tridiagonal_matrix_solver_mod, only: 48 & rad_tridiagonal_matrix_solver 47 49 48 50 implicit none -
trunk/LMDZ.GENERIC/libf/phygeneric/rad_correlatedk_fluxes_solver_thermal.F
r4077 r4097 13 13 use radcommon_h, only: planckir 14 14 use comcstfi_mod, only: pi 15 use rad_tridiagonal_matrix_solver_mod, only: 16 & rad_tridiagonal_matrix_solver 15 17 16 18 IMPLICIT NONE -
trunk/LMDZ.GENERIC/libf/phygeneric/rad_tridiagonal_matrix_solver.F
r4077 r4097 1 MODULE rad_tridiagonal_matrix_solver_mod 2 3 IMPLICIT NONE 4 5 CONTAINS 6 1 7 SUBROUTINE rad_tridiagonal_matrix_solver(NL, 2 8 * GAMA,CP,CM,CPM1,CMM1,E1,E2,E3,E4, 3 9 * BTOP,BSURF,RSF,XK1,XK2) 4 10 11 USE util_tridiagonal_matrix_solver_mod, ONLY: DTRIDGL 5 12 C GCM2.0 Feb 2003 6 13 C 7 14 C DOUBLE PRECISION VERSION OF SOLVER 8 15 9 !! PARAMETER (NMAX=201) 10 IMPLICIT REAL*8 (A-H,O-Z) 11 DIMENSION GAMA(NL),CP(NL),CM(NL),CPM1(NL),CMM1(NL),XK1(NL), 12 * XK2(NL),E1(NL),E2(NL),E3(NL),E4(NL) 13 DIMENSION AF(2*NL),BF(2*NL),CF(2*NL),DF(2*NL),XK(2*NL) 16 IMPLICIT NONE 17 18 INTEGER,INTENT(IN) :: NL 19 REAL*8,INTENT(IN) :: GAMA(NL),CP(NL),CM(NL) 20 REAL*8,INTENT(IN) :: CPM1(NL),CMM1(NL) 21 REAL*8,INTENT(OUT) :: XK1(NL), XK2(NL) 22 REAL*8,INTENT(IN) :: E1(NL),E2(NL),E3(NL),E4(NL) 23 REAL*8,INTENT(IN) :: BTOP, BSURF, RSF 24 REAL*8 :: AF(2*NL),BF(2*NL),CF(2*NL),DF(2*NL),XK(2*NL) 25 14 26 C********************************************************* 15 27 C* THIS SUBROUTINE SOLVES FOR THE COEFFICIENTS OF THE * … … 38 50 C********************************************************* 39 51 52 INTEGER :: L,LM1,LM2 53 INTEGER :: N 54 INTEGER :: I 40 55 C======================================================================C 41 56 … … 83 98 C ***UNMIX THE COEFFICIENTS**** 84 99 85 DO 28N=1,NL100 DO N=1,NL 86 101 XK1(N) = XK(2*N-1)+XK(2*N) 87 102 XK2(N) = XK(2*N-1)-XK(2*N) … … 92 107 C BE TREATED CAREFULLY 93 108 94 IF(XK2(N) .EQ. 0.0) GO TO 28109 IF(XK2(N) .EQ. 0.0) CONTINUE 95 110 c IF (ABS (XK2(N)/XK(2*N-1)) .LT. 1.E-30) XK2(N)=0.0 96 111 97 112 IF (ABS (XK2(N)/(XK(2*N-1)+1.e-20)) .LT. 1.E-30) XK2(N)=0.0 ! For debug only (with -Ktrap=fp option) 98 113 114 ENDDO 115 116 END SUBROUTINE rad_tridiagonal_matrix_solver 99 117 100 28 CONTINUE 101 102 RETURN 103 END 118 END MODULE rad_tridiagonal_matrix_solver_mod -
trunk/LMDZ.GENERIC/libf/phygeneric/util_tridiagonal_matrix_solver.F90
r4096 r4097 1 module util_tridiagonal_matrix_solver_mod 2 3 implicit none 4 5 contains 6 1 7 SUBROUTINE DTRIDGL(L,AF,BF,CF,DF,XK) 2 8 3 CGCM2.0 Feb 20039 ! GCM2.0 Feb 2003 4 10 5 CDOUBLE PRECISION VERSION OF TRIDGL11 ! DOUBLE PRECISION VERSION OF TRIDGL 6 12 7 !! PARAMETER (NMAX=201) 8 IMPLICIT REAL*8 (A-H,O-Z) 9 DIMENSION AF(L),BF(L),CF(L),DF(L),XK(L) 10 DIMENSION AS(2*L),DS(2*L) 13 REAL*8,INTENT(IN) :: AF(L),BF(L),CF(L),DF(L) 14 REAL*8,INTENT(OUT) :: XK(L) 15 INTEGER,INTENT(IN) :: L 11 16 12 C* THIS SUBROUTINE SOLVES A SYSTEM OF TRIDIAGIONAL MATRIX 13 C* EQUATIONS. THE FORM OF THE EQUATIONS ARE: 14 C* A(I)*X(I-1) + B(I)*X(I) + C(I)*X(I+1) = D(I) 15 C* WHERE I=1,L LESS THAN 103. 16 C* ..............REVIEWED -CP........ 17 !* THIS SUBROUTINE SOLVES A SYSTEM OF TRIDIAGIONAL MATRIX 18 !* EQUATIONS. THE FORM OF THE EQUATIONS ARE: 19 !* A(I)*X(I-1) + B(I)*X(I) + C(I)*X(I+1) = D(I) 20 !* ..............REVIEWED -CP........ 17 21 18 C======================================================================C 22 REAL*8 :: AS(2*L),DS(2*L) 23 REAL*8 :: XKB,X 24 INTEGER :: I 25 26 !======================================================================C 19 27 20 28 AS(L) = AF(L)/BF(L) … … 33 41 END DO 34 42 35 RETURN 36 END 43 END SUBROUTINE DTRIDGL 44 45 end module util_tridiagonal_matrix_solver_mod
Note: See TracChangeset
for help on using the changeset viewer.
