Skip to content
forked from rinx/micore

MICO-RE: Minimal Implementation of Cloud Optical Retrieval

License

Notifications You must be signed in to change notification settings

kameshvinjamuri/micore

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MICO-RE

MICO-RE 【miko-li / ミコリ】
Minimal Implementation of Cloud Optical Retrieval

MICO-RE estimates cloud optical thickness (COT) and cloud droplet effective radius (CDER) from reflectances in two wavelengths by using look-up table (Nakajima and King, 1990) and Levenberg-Marquardt method (Rodgers, 2000).
Akima method (Akima, 1970) is used as a method of interpolation.

Cloud Optical Retrieval Code

Installation

Just execute make command in src directory.

$ cd src
$ make

You can change your compiler setting in the Makefile (The default compiler is gfortran).

Usage

$ ./micore [lutfile] [surface_albedo] [reflectance1] [reflectance2]

like following:

$ ./micore ../example/lut_860_2130.bin 0.0 0.553 0.343

where reflectance 1 and 2 are the observed reflectances. surface_albedo is a value for shift LUT.

If you enable the verbose flag (please read the part of tuning), the output is composed by:

  • observed reflectances,
  • loaded LUT,
  • for each iterate step,
    • estimated cloud parameters,
    • estimated reflectances,
    • cost,
  • final cloud parameters and cost.

Final cloud parameters and cost are printed like:

 TAU:     13.206873367078288
 CDER:    6.2165327975806086
 COST:    1.1572150238204060E-020

Look-up table

Look-up table used in this program should be like following:

ex.)

COT CDER REF1 REF2
1.0 3.0 0.20 0.10
1.0 5.0 0.20 0.13
1.0 7.0 0.21 0.15
1.0 9.0 0.23 0.14
... ... ... ...
... ... ... ...
2.0 3.0 0.26 0.14
2.0 5.0 0.26 0.18
2.0 7.0 0.27 0.19
2.0 9.0 0.29 0.18
... ... ... ...
... ... ... ...

This file should be given as a binary format.
The data should be sorted like above.

An example of LUT is example/lut_860_2130.bin (SZA:30deg, VZA:30deg, RAA:0deg).

You can see the details by a command:

$ od -f example/lut_860_2130.bin | less

LUT should be calculated by radiative transfer models (ex. RSTAR).

Utils

  • lut_plot.rb
  • micore_tester.rb

lut_plot.rb makes a Nakajima-King-like plot of the look-up table.

$ ruby lut_plot.rb ../../example/lut_860_2130.bin with_point.png 0.0 0.55 0.45

It makes a plot like following:

example

These scripts require gnuplot gem and narray gem.

Tuning

There are some technical parameters in the header of micore_core.f90.

  ! flag for verbose mode
  logical, parameter :: verbose_flag = .true.

  ! threshold value for convergence of cost function
  real(R_), parameter :: threshold = 1e-13_R_
  real(R_), parameter :: diff_thre = 1e-13_R_
  ! max # of iteration
  integer, parameter :: max_iter = 9999
  ! max and min of tau and cder
  real(R_), parameter :: tau_max  = 150.0_R_
  real(R_), parameter :: tau_min  = 0.0_R_
  real(R_), parameter :: cder_max = 55.0_R_
  real(R_), parameter :: cder_min = 0.0_R_

You can modify these parameters as you like before compiling.

Remarks

It is founded that the Akima interpolation cannot be applied to multi-dimensional data set because the result of multi-dimensional interpolation depends on the order of interpolation. However, on estimation of cloud properties, the effect doesn't affect so much. In this code, the mean result of two different order of interpolation is used.

References

About

MICO-RE: Minimal Implementation of Cloud Optical Retrieval

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Fortran 59.0%
  • Ruby 40.0%
  • Makefile 1.0%