- Timestamp:
- 03/08/18 12:48:37 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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
Note: See TracChangeset
for help on using the changeset viewer.