Changeset 686 for codes/icosagcm/devel/src
- Timestamp:
- 03/08/18 12:48:37 (6 years ago)
- Location:
- codes/icosagcm/devel/src
- Files:
-
- 4 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/devel/src/icosa_init.f90
r642 r686 109 109 SUBROUTINE force_recompile_unstructured 110 110 USE timestep_unstructured_mod 111 USE transport_unstructured_mod 111 112 END SUBROUTINE force_recompile_unstructured 112 113 -
codes/icosagcm/devel/src/kernels_unst/caldyn_wflux.k90
r624 r686 7 7 convm(l,ij) = convm(l,ij) + convm(l+1,ij) 8 8 END DO 9 l=1 10 dmass_col(ij) = convm(l,ij) 9 dmass_col(ij) = convm(1,ij) 11 10 DO l = 2,llm 12 11 ! Compute vertical mass flux (l=1,llm+1 set to zero at init) -
codes/icosagcm/devel/src/kernels_unst/compute_NH_geopot.k90
r658 r686 52 52 DO ij=1,primal_num 53 53 ! Compute residual R_il and B_il 54 l=155 54 ! bottom interface l=1 56 ml_g2 = gm2*m_il( l,ij)57 B_il( l,ij) = A_ik(l,ij) + ml_g2 + tau2_g*rho_bot58 R_il( l,ij) = ml_g2*( Phi_il(l,ij)-Phi_star_il(l,ij)) &59 + tau2_g*( p_ik( l,ij)-pbot+rho_bot*(Phi_il(l,ij)-PHI_BOT(ij)) )55 ml_g2 = gm2*m_il(1,ij) 56 B_il(1,ij) = A_ik(1,ij) + ml_g2 + tau2_g*rho_bot 57 R_il(1,ij) = ml_g2*( Phi_il(1,ij)-Phi_star_il(1,ij)) & 58 + tau2_g*( p_ik(1,ij)-pbot+rho_bot*(Phi_il(1,ij)-PHI_BOT(ij)) ) 60 59 DO l = 2,llm 61 60 ! inner interfaces … … 68 67 ! and residual = tau^2*(ml+(1/g)dl_pi)=0 69 68 END DO 70 l=llm+171 69 ! top interface l=llm+1 72 ml_g2 = gm2*m_il(l ,ij)73 B_il(l ,ij) = A_ik(l-1,ij) + ml_g274 R_il(l ,ij) = ml_g2*( Phi_il(l,ij)-Phi_star_il(l,ij)) &75 + tau2_g*( ptop-p_ik(l -1,ij) )70 ml_g2 = gm2*m_il(llm+1,ij) 71 B_il(llm+1,ij) = A_ik(llm+1 -1,ij) + ml_g2 72 R_il(llm+1,ij) = ml_g2*( Phi_il(llm+1,ij)-Phi_star_il(llm+1,ij)) & 73 + tau2_g*( ptop-p_ik(llm+1 -1,ij) ) 76 74 ! 77 75 ! Forward sweep : 78 76 ! C(0)=0, C(l) = -A(l) / (B(l)+A(l-1)C(l-1)), 79 77 ! D(0)=0, D(l) = (R(l)+A(l-1)D(l-1)) / (B(l)+A(l-1)C(l-1)) 80 l=1 81 X_ij = 1./B_il(l,ij) 82 C_ik(l,ij) = -A_ik(l,ij) * X_ij 83 D_il(l,ij) = R_il(l,ij) * X_ij 78 X_ij = 1./B_il(1,ij) 79 C_ik(1,ij) = -A_ik(1,ij) * X_ij 80 D_il(1,ij) = R_il(1,ij) * X_ij 84 81 DO l = 2,llm 85 82 X_ij = 1./( B_il(l,ij) + A_ik(l-1,ij)*C_ik(l-1,ij) ) … … 87 84 D_il(l,ij) = (R_il(l,ij)+A_ik(l-1,ij)*D_il(l-1,ij)) * X_ij 88 85 END DO 89 l=llm+1 90 X_ij = 1./( B_il(l,ij) + A_ik(l-1,ij)*C_ik(l-1,ij) ) 91 D_il(l,ij) = (R_il(l,ij)+A_ik(l-1,ij)*D_il(l-1,ij)) * X_ij 86 X_ij = 1./( B_il(llm+1,ij) + A_ik(llm+1 -1,ij)*C_ik(llm+1 -1,ij) ) 87 D_il(llm+1,ij) = (R_il(llm+1,ij)+A_ik(llm+1 -1,ij)*D_il(llm+1 -1,ij)) * X_ij 92 88 ! Back substitution : 93 89 ! x(i) = D(i)-C(i)x(i+1), x(llm+1)=0 94 90 ! + Newton-Raphson update 95 91 ! top interface l=llm+1 96 x_il(l ,ij) = D_il(l,ij)97 Phi_il(l ,ij) = Phi_il(l,ij) - x_il(l,ij)92 x_il(llm+1,ij) = D_il(llm+1,ij) 93 Phi_il(llm+1,ij) = Phi_il(llm+1,ij) - x_il(llm+1,ij) 98 94 DO l = llm,1,-1 99 95 ! Back substitution at lower interfaces -
codes/icosagcm/devel/src/kernels_unst/compute_geopot.k90
r614 r686 6 6 !$OMP DO SCHEDULE(STATIC) 7 7 DO ij=1,primal_num 8 l=llm 9 pk(l,ij) = ptop + .5*g* theta(l,ij,1)*rhodz(l,ij) 8 pk(llm,ij) = ptop + .5*g* theta(llm,ij,1)*rhodz(llm,ij) 10 9 DO l = llm-1,1,-1 11 10 pk(l,ij) = pk(l+1,ij) + (.5*g)*( theta(l,ij,1)*rhodz(l,ij) + theta(l+1,ij,1)*rhodz(l+1,ij) ) 12 11 END DO 13 12 IF(caldyn_eta == eta_lag) THEN 14 l=1 15 ps(ij) = pk(l,ij) + .5*g* theta(l,ij,1)*rhodz(l,ij) 13 ps(ij) = pk(1,ij) + .5*g* theta(1,ij,1)*rhodz(1,ij) 16 14 END IF 17 15 END DO … … 29 27 !$OMP DO SCHEDULE(STATIC) 30 28 DO ij=1,primal_num 31 l=llm 32 pk(l,ij) = ptop + .5*g* rhodz(l,ij) 29 pk(llm,ij) = ptop + .5*g* rhodz(llm,ij) 33 30 DO l = llm-1,1,-1 34 31 pk(l,ij) = pk(l+1,ij) + (.5*g)*( rhodz(l,ij) + rhodz(l+1,ij) ) 35 32 END DO 36 33 IF(caldyn_eta == eta_lag) THEN 37 l=1 38 ps(ij) = pk(l,ij) + .5*g* rhodz(l,ij) 34 ps(ij) = pk(1,ij) + .5*g* rhodz(1,ij) 39 35 END IF 40 36 END DO … … 54 50 !$OMP DO SCHEDULE(STATIC) 55 51 DO ij=1,primal_num 56 l=llm 57 pk(l,ij) = ptop + .5*g* rhodz(l,ij) 52 pk(llm,ij) = ptop + .5*g* rhodz(llm,ij) 58 53 DO l = llm-1,1,-1 59 54 pk(l,ij) = pk(l+1,ij) + (.5*g)*( rhodz(l,ij) + rhodz(l+1,ij) ) 60 55 END DO 61 56 IF(caldyn_eta == eta_lag) THEN 62 l=1 63 ps(ij) = pk(l,ij) + .5*g* rhodz(l,ij) 57 ps(ij) = pk(1,ij) + .5*g* rhodz(1,ij) 64 58 END IF 65 59 END DO … … 79 73 !$OMP DO SCHEDULE(STATIC) 80 74 DO ij=1,primal_num 81 l=llm 82 pk(l,ij) = ptop + .5*g* rhodz(l,ij)*(1.+theta(l,ij,2)) 75 pk(llm,ij) = ptop + .5*g* rhodz(llm,ij)*(1.+theta(llm,ij,2)) 83 76 DO l = llm-1,1,-1 84 77 pk(l,ij) = pk(l+1,ij) + (.5*g)*( rhodz(l,ij)*(1.+theta(l,ij,2)) + rhodz(l+1,ij)*(1.+theta(l+1,ij,2)) ) 85 78 END DO 86 79 IF(caldyn_eta == eta_lag) THEN 87 l=1 88 ps(ij) = pk(l,ij) + .5*g* rhodz(l,ij)*(1.+theta(l,ij,2)) 80 ps(ij) = pk(1,ij) + .5*g* rhodz(1,ij)*(1.+theta(1,ij,2)) 89 81 END IF 90 82 END DO -
codes/icosagcm/devel/src/kernels_unst/theta.k90
r658 r686 7 7 !$OMP DO SCHEDULE(STATIC) 8 8 DO ij=1,primal_num 9 l=010 9 mass_col(ij)=0. 11 10 DO l = 1,llm
Note: See TracChangeset
for help on using the changeset viewer.