Changeset 5086 for LMDZ6/branches/Amaury_dev/libf/phylmd/cosp
- Timestamp:
- Jul 19, 2024, 7:54:50 PM (4 months ago)
- Location:
- LMDZ6/branches/Amaury_dev/libf/phylmd/cosp
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/phylmd/cosp/icarus.F
r5082 r5086 364 364 enddo 365 365 366 do 12ilev=1,nlev366 do ilev=1,nlev 367 367 do j=1,npoints 368 368 if (pfull(j,ilev) < 40000. .and. … … 375 375 end if 376 376 enddo 377 12 continue 378 379 do 13ilev=1,nlev377 END DO 378 379 do ilev=1,nlev 380 380 do j=1,npoints 381 381 if (at(j,ilev) > atmax(j) .and. 382 382 & ilev >= itrop(j)) atmax(j)=at(j,ilev) 383 383 enddo 384 13 continue 384 END DO 385 385 386 386 end if … … 391 391 meantb(j) = 0. 392 392 meantbclr(j) = 0. 393 end do393 END DO 394 394 else 395 395 do j=1,npoints 396 396 meantb(j) = output_missing_value 397 397 meantbclr(j) = output_missing_value 398 end do398 END DO 399 399 end if 400 400 … … 466 466 467 467 !initialize tau and albedocld to zero 468 do 15ibox=1,ncol468 do ibox=1,ncol 469 469 do j=1,npoints 470 470 tau(j,ibox)=0. … … 474 474 box_cloudy(j,ibox)=.false. 475 475 enddo 476 15 continue 476 END DO 477 477 478 478 !compute total cloud optical depth for each column … … 541 541 if (ncolprint /= 0) 542 542 & write(6,*) 'ilev pw (kg/m2) tauwv(j) dem_wv' 543 do 125ilev=1,nlev543 do ilev=1,nlev 544 544 do j=1,npoints 545 545 !press and dpress are dyne/cm2 = Pascals *10 … … 568 568 enddo 569 569 endif 570 125 continue 570 END DO 571 571 572 572 !initialize variables … … 740 740 bb(j)=1/( exp(1307.27/skt(j)) - 1. ) 741 741 !bb(j)=5.67e-8*skt(j)**4 742 end do742 END DO 743 743 744 744 do ibox=1,ncol … … 751 751 & * trans_layers_above(j,ibox) 752 752 753 end do754 end do753 END DO 754 END DO 755 755 756 756 !calculate mean infrared brightness temperature … … 758 758 do j=1,npoints 759 759 meantb(j) = meantb(j)+1307.27/(log(1.+(1./fluxtop(j,ibox)))) 760 end do761 end do760 END DO 761 END DO 762 762 do j=1, npoints 763 763 meantb(j) = meantb(j) / real(ncol) 764 end do764 END DO 765 765 766 766 if (ncolprint/=0) then … … 784 784 write (6,'(8f7.2)') (meantb(j),ibox=1,ncolprint) 785 785 786 end do786 END DO 787 787 endif 788 788 … … 925 925 926 926 !compute cloud top pressure 927 do 30ibox=1,ncol927 do ibox=1,ncol 928 928 !segregate according to optical thickness 929 929 if (top_height == 1 .or. top_height == 3) then … … 933 933 nmatch(j)=0 934 934 enddo 935 do 29k1=1,nlev-1935 do k1=1,nlev-1 936 936 if (top_height_direction == 2) then 937 937 ilev = nlev - k1 … … 951 951 end if 952 952 enddo 953 29 continue 953 END DO 954 954 955 955 do j=1,npoints … … 992 992 levmatch(j,ibox)=ilev 993 993 end if 994 end do995 end do994 END DO 995 END DO 996 996 end if 997 997 … … 1003 1003 enddo 1004 1004 1005 30 continue 1005 END DO 1006 1006 1007 1007 ! … … 1032 1032 1033 1033 !reset frequencies 1034 do 38ilev=1,71034 do ilev=1,7 1035 1035 do 38 ilev2=1,7 1036 1036 do j=1,npoints ! … … 1042 1042 enddo 1043 1043 38 continue 1044 END DO 1044 1045 1045 1046 !reset variables need for averaging cloud properties … … 1060 1061 boxarea = 1./real(ncol) 1061 1062 1062 do 39ibox=1,ncol1063 do ibox=1,ncol 1063 1064 do j=1,npoints 1064 1065 … … 1166 1167 1167 1168 enddo ! j 1168 39 continue 1169 END DO 1169 1170 1170 1171 !compute mean cloud properties … … 1227 1228 & (cchar_realtops(acc(ilev,ibox)+1),ilev=1,nlev) 1228 1229 & ,(cchar(acc(ilev,ibox)+1),ilev=1,nlev) 1229 end do1230 END DO 1230 1231 close(9) 1231 1232 -
LMDZ6/branches/Amaury_dev/libf/phylmd/cosp/math_lib.F90
r5082 r5086 273 273 exit 274 274 end if 275 end do275 END DO 276 276 277 277 if (lerror) then … … 316 316 end if 317 317 ilo = ilo + 1 318 end do318 END DO 319 319 320 320 ilo = max ( 2, ilo ) … … 326 326 end if 327 327 ihi = ihi - 1 328 end do328 END DO 329 329 330 330 ihi = min ( ihi, ntab - 1 ) … … 374 374 syl = x2 375 375 376 end do376 END DO 377 377 378 378 result = sum1 & -
LMDZ6/branches/Amaury_dev/libf/phylmd/cosp/mod_cosp_modis_simulator.F90
r3233 r5086 176 176 opticalThickness(i, j, k) = 0. 177 177 end if 178 end do179 end do180 end do178 END DO 179 END DO 180 END DO 181 181 182 182 ! … … 197 197 do i = 1, nSunlit 198 198 if(subCols%frac_out(sunlit(i), j, k) == I_CVC) opticalThickness(i, j, k) = gridBox%dtau_c(sunlit(i), k) 199 end do200 end do201 end do199 END DO 200 END DO 201 END DO 202 202 203 203 ! … … 220 220 retrievedPhase(i, :), retrievedCloudTopPressure(i, :), & 221 221 retrievedTau(i, :), retrievedSize(i, :)) 222 end do222 END DO 223 223 224 224 ! DJS2015: Call L3 modis simulator used by cospv2.0 -
LMDZ6/branches/Amaury_dev/libf/phylmd/cosp/mod_modis_sim.F90
r5082 r5086 331 331 retrievedTau(i) = R_UNDEF 332 332 end if 333 end do333 END DO 334 334 where((retrievedSize(:) < 0.).and.(retrievedSize(:) /= R_UNDEF)) retrievedSize(:) = 1.0e-06*re_fill 335 335 … … 802 802 tauMask(:, :, i) = .false. 803 803 end where 804 end do804 END DO 805 805 806 806 do i = 1, numPressureHistogramBins … … 811 811 pressureMask(:, :, i) = .false. 812 812 end where 813 end do813 END DO 814 814 815 815 do i = 1, numPressureHistogramBins … … 817 817 Optical_Thickness_vs_Cloud_Top_Pressure(:, j, i) = & 818 818 real(count(tauMask(:, :, j) .and. pressureMask(:, :, i), dim = 2)) / real(nSubcols) 819 end do820 end do819 END DO 820 END DO 821 821 822 822 end subroutine modis_L3_simulator … … 851 851 end if 852 852 if(totalTau >= tauLimit) exit 853 end do853 END DO 854 854 cloud_top_pressure = totalProduct/totalTau 855 855 end function cloud_top_pressure … … 877 877 end if 878 878 if(totalTau >= tauLimit) exit 879 end do879 END DO 880 880 weight_by_extinction = totalProduct/totalTau 881 881 end function weight_by_extinction … … 1114 1114 do i = 1, size(cloudIndicies) 1115 1115 call two_stream(tau(cloudIndicies(i)), g(cloudIndicies(i)), w0(cloudIndicies(i)), Refl(i), Trans(i)) 1116 end do1116 END DO 1117 1117 1118 1118 call adding_doubling(Refl(:), Trans(:), Refl_tot, Trans_tot) … … 1292 1292 Refl_cumulative(i) = Refl_cumulative(i-1) + Refl(i)*(Tran_cumulative(i-1)**2)/(1 - Refl_cumulative(i-1) * Refl(i)) 1293 1293 Tran_cumulative(i) = (Tran_cumulative(i-1)*Tran(i)) / (1 - Refl_cumulative(i-1) * Refl(i)) 1294 end do1294 END DO 1295 1295 1296 1296 Refl_tot = Refl_cumulative(size(Refl)) -
LMDZ6/branches/Amaury_dev/libf/phylmd/cosp/optics_lib.F90
r5081 r5086 519 519 520 520 ! // region from 0.045 microns to 167.0 microns - no temperature depend 521 do i=2,nwl522 if(alam < wl(i)) continue523 enddo524 521 x1=log(wl(i-1)) 525 522 x2=log(wl(i)) … … 539 536 if(tk > temref(1)) tk=temref(1) 540 537 if(tk < temref(4)) tk=temref(4) 541 do 11i=2,4538 do i=2,4 542 539 if(tk>=temref(i)) go to 12 543 11 continue540 END DO 544 541 12 lt1=i 545 542 lt2=i-1 546 do 13i=2,nwlt543 do i=2,nwlt 547 544 if(alam<=wlt(i)) go to 14 548 13 continue545 END DO 549 546 14 x1=log(wlt(i-1)) 550 547 x2=log(wlt(i)) -
LMDZ6/branches/Amaury_dev/libf/phylmd/cosp/scops.F
r5082 r5086 161 161 162 162 !loop over vertical levels 163 DO 200ilev = 1,nlev163 DO ilev = 1,nlev 164 164 165 165 ! Initialise threshold … … 331 331 endif 332 332 333 200 CONTINUE!loop over nlev333 END DO !loop over nlev 334 334 335 335 -
LMDZ6/branches/Amaury_dev/libf/phylmd/cosp/zeff.F90
r5082 r5086 113 113 call mieint(sizep(i), m0(i), one, dqv, qext(i), dqsc, qbsca(i), & 114 114 dg, xs1, xs2, dph, err) 115 end do115 END DO 116 116 117 117 else
Note: See TracChangeset
for help on using the changeset viewer.