Changeset 151 for codes/icosagcm/trunk/src/advect.f90
- Timestamp:
- 05/13/13 14:30:31 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/trunk/src/advect.f90
r148 r151 53 53 SUBROUTINE compute_gradq3d(qi,one_over_sqrt_leng,gradq3d) 54 54 USE trace 55 USE omp_para 55 56 IMPLICIT NONE 56 57 REAL(rstd),INTENT(IN) :: qi(iim*jjm,llm) … … 72 73 ! Compute gradient at triangles solving a linear system 73 74 ! arr = area of triangle joining centroids of hexagons 74 Do l = 1,llm75 DO l = ll_begin,ll_end 75 76 DO j=jj_begin-1,jj_end+1 76 77 DO i=ii_begin-1,ii_end+1 … … 90 91 91 92 DO k=1,3 92 DO l = 1,llm93 DO l =ll_begin,ll_end 93 94 DO j=jj_begin,jj_end 94 95 DO i=ii_begin,ii_end … … 103 104 104 105 !============================================================================================= LIMITING 105 ! GO TO 120 106 DO l =1,llm 106 DO l =ll_begin,ll_end 107 107 DO j=jj_begin,jj_end 108 108 DO i=ii_begin,ii_end … … 110 110 maggrd = dot_product(gradq3d(n,l,:),gradq3d(n,l,:)) 111 111 maggrd = sqrt(maggrd) 112 ! leng = max(sum((xyz_v(n+z_up,:) - xyz_i(n,:))**2),sum((xyz_v(n+z_down,:) - xyz_i(n,:))**2), &113 ! sum((xyz_v(n+z_rup,:) - xyz_i(n,:))**2),sum((xyz_v(n+z_rdown,:) - xyz_i(n,:))**2), &114 ! sum((xyz_v(n+z_lup,:) - xyz_i(n,:))**2),sum((xyz_v(n+z_ldown,:) - xyz_i(n,:))**2))115 ! maxq_c = qi(n,l) + maggrd*sqrt(leng(n))116 ! minq_c = qi(n,l) - maggrd*sqrt(leng(n))117 112 maxq_c = qi(n,l) + maggrd*one_over_sqrt_leng(n) 118 113 minq_c = qi(n,l) - maggrd*one_over_sqrt_leng(n) … … 137 132 SUBROUTINE compute_backward_traj(normal,tangent,ue,tau, cc) 138 133 USE trace 134 USE omp_para 139 135 IMPLICIT NONE 140 136 REAL(rstd),INTENT(IN) :: normal(3*iim*jjm,3) … … 152 148 153 149 ! reconstruct tangential wind then 3D wind at edge then cc = edge midpoint - u*tau 154 DO l = 1,llm150 DO l = ll_begin,ll_end 155 151 DO j=jj_begin-1,jj_end+1 156 152 DO i=ii_begin-1,ii_end+1 … … 213 209 SUBROUTINE compute_advect_horiz(update_mass,hfluxt,cc,gradq3d, mass,qi) 214 210 USE trace 211 USE omp_para 215 212 IMPLICIT NONE 216 213 LOGICAL, INTENT(IN) :: update_mass … … 230 227 ! q(cc)= q0 + gradq.(cc-xyz_i) with xi centroid of hexagon 231 228 ! ne*hfluxt>0 iff outgoing 232 DO l = 1,llm229 DO l = ll_begin,ll_end 233 230 DO j=jj_begin-1,jj_end+1 234 231 DO i=ii_begin-1,ii_end+1 … … 265 262 266 263 ! update q and, if update_mass, update mass 267 DO l = 1,llm264 DO l = ll_begin,ll_end 268 265 DO j=jj_begin,jj_end 269 266 DO i=ii_begin,ii_end
Note: See TracChangeset
for help on using the changeset viewer.