! $Header$ SUBROUTINE divgrad(klevel, h, lh, divgra) USE lmdz_filtreg, ONLY: filtreg USE lmdz_ssum_scopy, ONLY: scopy USE lmdz_comdissipn, ONLY: tetaudiv, tetaurot, tetah, cdivu, crot, cdivh USE lmdz_comgeom USE lmdz_dimensions, ONLY: iim, jjm, llm, ndm USE lmdz_paramet IMPLICIT NONE !======================================================================= ! Auteur : P. Le Van ! ---------- ! lh ! calcul de (div( grad )) de h ..... ! h et lh sont des arguments d'entree pour le s-prog ! divgra est un argument de sortie pour le s-prog !======================================================================= ! declarations: ! ------------- ! INTEGER :: klevel REAL :: h(ip1jmp1, klevel), divgra(ip1jmp1, klevel) REAL :: ghy(ip1jm, llm), ghx(ip1jmp1, llm) INTEGER :: l, ij, iter, lh CALL SCOPY (ip1jmp1 * klevel, h, 1, divgra, 1) DO iter = 1, lh CALL filtreg (divgra, jjp1, klevel, 2, 1, .TRUE., 1) CALL grad (klevel, divgra, ghx, ghy) CALL diverg (klevel, ghx, ghy, divgra) CALL filtreg (divgra, jjp1, klevel, 2, 1, .TRUE., 1) DO l = 1, klevel DO ij = 1, ip1jmp1 divgra(ij, l) = - cdivh * divgra(ij, l) END DO END DO END DO RETURN END SUBROUTINE divgrad