Coder Social home page Coder Social logo

aer-rc / lblrtm Goto Github PK

View Code? Open in Web Editor NEW
80.0 9.0 26.0 6.89 MB

Line-By-Line Radiative Transfer Model by Atmospheric and Environmental Research

License: Other

Fortran 99.91% Dockerfile 0.02% Shell 0.01% C++ 0.05% NASL 0.01%
radiative-transfer radiative-transfer-models atmospheric-modelling

lblrtm's Introduction

LBLRTM


Contents

  1. Introduction
  2. Cloning the Latest Release
  3. LBLRTM and Docker
  4. General LNFL/LBLRTM File Information
    1. Platforms on which LBLRTM can be run
    2. Issues relating to unformatted files on UNIX and LINUX systems
    3. LNFL/LBLRTM Naming Convention
    4. LNFL/LBLRTM Input File (TAPE5) Format
    5. LBLRTM Output File Format
  5. Instructions and Tips for Running LNFL
    1. Input files for LNFL
    2. Output files for LNFL
    3. Sequence for running LNFL
  6. Instructions and Tips for Compiling and Running LBLRTM
    1. Required input files for LBLRTM
    2. Layer numbering scheme
    3. Output files for LBLRTM
    4. Sequence for running LBLRTM
  7. Examples
  8. Frequently Asked Questions

Introduction

LBLRTM (Line-By-Line Radiative Transfer Model) is an accurate and efficient line-by-line radiative transfer model derived from the Fast Atmospheric Signature Code (FASCODE). LBLRTM has been, and continues to be, extensively validated against atmospheric radiance spectra from the ultraviolet to the sub-millimeter.

The HITRAN database provides the basis for the line parameters used in LBLRTM. These line parameters, as well as additional line parameters from other sources, are extracted for use in LBLRTM by a line file creation program called LNFL. A line parameter database built from HITRAN and suitable for use with LNFL can be downloaded with the AER Line File retrieval code or directory from the Zenodo repository.

LBLRTM uses the line parameters and MT_CKD continuum in its calculations. The models and data are thus linked. For the latest release, the relationships are:

LBLRTM Release MT_CKD Release Line File
v12.17 4.3 v3.8.1

Note that building LBLRTM_v12.14 and later requires using the netCDF libraries and setting the path to their location in the file addlibs.inc in the /build directory.

If any build or run issues occur, please create an issue or contact the AER-RC Group.

[Add plantUML diagram]

For more, please see the Wiki page

Cloning the Latest Release

Assuming the output directory should be LBLRTM and that the user has created an SSH key (we use RSA):

git clone --recursive [email protected]:AER-RC/LBLRTM.git

Alternatively, users that have not setup an SSH key but have created a personal access token can use the HTTPS protocol:

git clone --recursive https://github.com/AER-RC/LBLRTM.git

--recursive is important, because this repository is linked with our common FORTRAN modules repository that are required in the model builds. The cross section database is also added as a submodule (it is not required for all model runs). If this keyword is forgotten, one can do:

git submodule init
git submodule update

in the LBLRTM directory.

Currently, the latest release is LBLRTM v12.17, and it is recommended that this be the version that users clone and checkout (rather than the master branch). To do this, one needs to simply checkout the v12.17 tag:

git checkout tags/v12.17

No releases before v12.9 are available via GitHub, but they can be requested by contacting the AER-RC Group. For information on previous releases, please visit the What's New Wiki page.

Instead of cloning, users can also download an LBLRTM tarball and unpack it:

tar xvf lblrtm_v12.17.tar.gz
mv LBLRTM-12.17/ lblrtm

Though not necessary, the move to lblrtm is for consistency with previous release packages and the associated documentation.

LBLRTM and Docker

More doc to come, but see the GitHub package page for Docker image pull directions. And to run:

docker pull docker.pkg.github.com/aer-rc/lblrtm/lblrtm:latest

docker tag docker.pkg.github.com/aer-rc/lblrtm/lblrtm:latest lblrtm

docker run -it --rm -v ~/Work/RC/LBLRTM/LBL_In:/LBLRTM/LBLRTM_In -v ~/Work/RC/LBLRTM/LBL_Out:/LBLRTM/LBLRTM_Out lblrtm

Volume mounts are necessary to provide LBLRTM inputs and for the user to have access to the outputs. Currently, the TAPE3, TAPE5, and cross section database are assumed to be in the LBLRTM input directory. EMISSIVITY and REFLECTIVITY could conceivably work with the correct volume mounts. Cross sections will be their own submodule at some point. The LBLRTM input file naming convention is assumed.

General LNFL/LBLRTM File Information

Platforms on which LBLRTM can be run

It is recommended that LNFL and LBLRTM be compiled in Fortran 90. LBLRTM has previously been run on DEC alpha, Cray, MS-DOS, and HP platforms.

Some users have ported the code to the Windows/DOS environment. AER presently does not officially support this implementation; however, the following description of how LBLRTM was used in XP by a user (Christopher Rice, Air Force Institute of Technology [AFIT]):

  • Obtain the newest Intel Fortran Compiler (v 9.1) and Visual Studio.net 2003.
  • Install visual studio .net 2003.
  • Install Intel Fortran Compiler (Fortran compiler options will appear in MSVS 2003 after the Intel Fortran Compiler is installed.
  • Decompress source codes for LBLRTM and LNFL into their appropriate folders.
  • Compile LNFL:
    • Open Visual Studio 2003.
    • Open a new project.
    • Select “Intel Fortran Projects” under “Project Types” and choose “Console Application” from “Templates”.
    • Name this project accordingly. (e.g., LNFL_Exe)
    • After the project is created a “Solution Explorer” will show the solution named as above. Right click on “Source Files” and add the following files:
      • lnfl.f90
      • util_dos.f90
    • Note that the util_linux_intel makefile can be used as a reference for the files to be included, replacing util_linux.f90 with the file util_dos.f90.
    • Make sure the compiler is set to “release” NOT “debug”.
    • Build the Project.
    • On successful build find the .exe in the “release” folder where the project is saved
  • Compile LBLRTM:
    • Open Visual Studio 2003.
    • Open a new project.
    • Select “Intel Fortran Projects” under “Project Types” and choose “Console Application” from “Templates”.
    • Name this project accordingly. (e.g., LBLRTM_Exe)
    • After the project is created a “Solution Explorer” will show a solution named as above. Right click on “Source Files” and add the following files:
      • contnm.f90
      • fftscn.f90
      • lblatm.f90
      • lbldum.f90
      • lbllow.f90
      • lblrtm.f90
      • nonlte.f90
      • oprop.f90
      • pltlbl.f90
      • postsub.f90
      • solar.f90
      • testmm.f90
      • util_dos.f90
      • xmerge.f90
    • Note that the util_linux_intel makefile can be used as a reference for the files to be included, replacing util_linux.f90 with the file util_dos.f90.
    • Make sure the compiler is set to “release” NOT “debug” – LBLRTM will not operate correctly when compiled in “Debug” mode.
    • Build the Project.
    • On successful build find the exe in the “release” folder where the project is saved.
  • Use LNFL with TAPE5 to create TAPE3 as described in the documentation,
  • Use TAPE3 with LBLRTM to satisfy your requirements as described in documentation.

Issues relating to unformatted files on UNIX and LINUX systems

Unformatted files are often not compatible between systems due to differences in the way the bytes are written to the files (big-endian versus little-endian). Note that the byteswap option available with most compilers will not work with most LBLRTM unformatted output files because of the mixing of real and integer data within records.

LNFL/LBLRTM Naming Convention

Specific information on the input/output files from LNFL and LBLRTM is located in their respective input files, lnfl_instructions and lblrtm_instructions, and the examples provided in the code tar files.

Most file names are given as TAPEx where x is a one- or two-digit number. The name is case-sensitive, and is uppercase. Tape numbers may be same for LNFL and LBLRTM but do not represent identical files. For example, the primary LNFL input file is TAPE5, and the primary LBLRTM input file is TAPE5. However, they have neither the same input information nor the same formatting. The instruction manual for each code details the input file information.

LNFL/LBLRTM Input File (TAPE5) Format

The TAPE5 input files are read as formatted FORTRAN. As a consequence of the formatted read, any blank space will be read as "zero". Thus, one may leave blanks for most of the parameters and within the code they will default to an acceptable value.

Real numbers format input as either E or F format, with the entire number within the range specified in the input instructions. Integers must be specified exactly in the integer format. For example, the spectral bandwidth (v1 to v2) in LBLRTM TAPE5 is input as 10 character real numbers. This means that the value can be written anywhere within these 10 characters, as long as there is a decimal point (e.g. "---600.000" or "-600.000--", where "-" is a blank space).

Integers are read in with the I format. For example, the model atmosphere (iatm) in LBLRTM TAPE5 is input as I5, so it must be "----2", and not "2----" as this will be read as 20000.

LBLRTM Output File Format

The general structure of the files involves the use of panels, which are blocks of output usually containing 2400 points. Each panel contains a header to describe the starting and ending points of the panel (v1 and v2), the spectral spacing of the points (dvp), and the number of points in the panel (npts). The panel header is followed by either one or two (see below) blocks of output, consisting of npts points.

[this needs work]

TAPE12: Radiances and transmittances (1) file header (2,i)-panel header (3,i) radiances (4,i) transmittances Lines 2-4 repeat for i=1,N times to cover the entire spectral region.

TAPE11: Filtered radiance or transmittance (also applies to any user-designated output file which contains radiances, transmittances, or optical depths, such as the "ODint" file) (1)file header (2,i)-panel header (3,i) radiances or transmittances Lines 2-3 repeat for i=1,N times to cover the entire spectral region.

Note that a limited amount of spectral output information may also be put in the TAPE6 using the MPTS/NPTS options of TAPE5 record 1.2.

Instructions and Tips for Running LNFL

LNFL is used to generate a unformatted file (TAPE3) of all the line parameters required by LBLRTM.

Input files for LNFL

  1. TAPE1: The line parameter database in ASCII format (downloaded with the AER Line File repository or from Zenodo).

  2. TAPE5: LNFL input file.

Output files for LNFL

  1. TAPE3: Unformatted LNFL output file containing the line parameters for LBLRTM.
  2. TAPE6: Informational output file.
  3. TAPE7: Optional output file containing ASCII version of the parameters contained in TAPE3.

Sequence for running LNFL

  • Clone the latest LNFL code and download the latest line parameter database with the AER Line File repository or from Zenodo.
  • Compile LNFL using the makefiles found in the LNFL tar file. Note: one needs to compile in the build directory.
  • Link the line parameter database to TAPE1 in the LNFL working directory.
  • Remove TAPE3 file from the LNFL working directory.
  • Edit necessary parameters in the TAPE5 input file. Note that the beginning and ending wavenumber (v1, v2) in TAPE5 must extend at least 25 cm-1 beyond each end of the desired spectral range for the LBLRTM calculations.
  • Run the LNFL executable.

Instructions and Tips for Compiling and Running LBLRTM

LBLRTM is used to generate line-by-line upwelling and downwelling transmittances and radiances.

Required input files for LBLRTM

  1. TAPE3: Unformatted file containing line parameter information, generated by LNFL (see above). The TAPE3 file should include lines from at least 25 cm-1 on either end of the calculation region.
  2. TAPE5: Input file required to run LBLRTM.

The spectral interval (v1, v2) for any LBLRTM run must not exceed 2000 cm-1 (see instruction manual).

Other input files are required if you are using the solar source function, cross sections or surface emissivity. See the LBLRTM instruction manual and provided examples.

Layer numbering scheme

The LBLRTM convention is that layer 1 is at the highest pressure level (lowest altitude). The layer information for a given run may be found in TAPE6.

Output files for LBLRTM

  1. TAPE6: Informational output file
  2. TAPE11: Unformatted file containing filtered output, if requested in TAPE5.
  3. TAPE12: Unformatted file containing transmittances/radiances.

ASCII file of unformatted unformatted files can be requested in the LBLRTM TAPE5 (see pltlbl variable in Record 12).

Unformatted optical depth files can be requested in the LBLRTM using options specified in TAPE5.

Sequence for running LBLRTM

  • Clone the latest LBLRTM code and download the latest line parameter database with the AER Line File repository or from Zenodo.
  • For LBLRTM_v12.14 and later, install the netCDF libraries and set the path to their location in the addlibs.inc file in the /build directory.
  • Compile LBLRTM following makefiles in the LBLRTM tar file. Note, one needs to compile in the build directory
  • Link the line parameter database (TAPE3 from LNFL) to the LBLRTM working directory.
  • Edit any parameters necessary in the input file TAPE5.
  • Run the LBLRTM executable.

Examples

As of LBLRTM v12.10, a run example package is provided separately from the code repository. It can be used to validate building and running of the model for select atmospheric specifications and model configurations. See README.setup in top level of the package for further direction.

Frequently Asked Questions

  1. What is the difference between a line-by-line calculation and a band-model calculation?

Absorption/emission spectra are comprised of a complicated array of spectral lines. The HITRAN 2008 Database (Version 13.0) contains over 2,713,000 lines for 39 different molecules. In order to resolve these individual lines, a nominal spectral sampling rate of less than the mean line half width must be utilized. Such highly resolved radiative transfer calculations are called line-by-line (LBL) calculations. The computational time associated with calculating broadband fluxes from LBL calculations is formidable. A band model aims to simplify radiative transfer calculations by using approximations to represent the line-by-line characteristics of a particular spectral interval. Band models are appropriate for situations where the desired spectral resolution is much smaller than the Lorentz and Doppler widths of the spectral lines. Such approximations are also of use in general circulation models.

  1. What are the standard units used in LBLRTM calculations?
Output Variable Units
Wavenumber cm-1
Radiance W cm-2 sr-1 / cm-1
Brightness Temperature K
Analytic Jacobians (dR/dx)
  • molecules: W cm-2 sr-1 / cm-1 / log(VMR)
  • temperature: W cm-2 sr-1 / cm-1 / K
  1. Radiance Derivatives (Jacobians)

This section describes the Analytical Jacobian capability in LBLRTM, Version 10.0 and later. The results from earlier versions are not reliable and should NOT be used. The implementation of the analytic Jacobians in LBLRTM has been designed to require a minimal amount of setup on the part of the user while exploiting pre-existing LBLRTM calculation options. There are three steps required to obtain layer and level Analytic Jacobians:

  1. Create the ODint_lll files using IMRG=1 and IOD =3; "lll" is the layer number. Following LBLRTM convention, layer 1 is at the highest pressure level (lowest altitude). The spectral grid for the monochromatic calculation is determined by the DV of the highest layer (DVSET is automatically set by the program).

  2. Create the RDDN_lll files which provide the radiances from the top of the profile to level "lll" using IMRG=40 and IOD=3. Note that the RDDNlayer_001 file is the downwelling radiance at the surface. The ODint files from Step 1 are used for this calculation.

  3. Create the layer and level Analytic Jacobian files in directory AJ; RDderivUPW_xx_lll and LEV_RDderivUPW_xx_lll are the layer and level derivatives files of the upwelling radiance at the upper boundary of the profile (IMRG=41 and IOD=3) taken with respect to state parameter xx. Similarly, the files RDderivDNW_xx_lll and LEV_RDderivDNW_xx_lll are obtained for the downwelling radiance at the lower boundary (IMRG=40 and IOD=3) with the Jacobian taken with respect to state vector type xx where:

  • xx = -1 surface parameters
  • xx = 0 temperature
  • xx = mol molecule number (1-38)

Multiple runs of Step 3 may be performed once Step 1 and Step 2 have been run, the radiometric representation for the Jacobians having been established,

All the unformatted files resulting from these operations are fully consistent with LBLRTM files. The layer and level Jacobian files have the Radiance Jacobians in the normal radiance panel and the transmittance from the lowest boundary of the problem to the bottom level of the layer lll in the transmittance panel or to the designated level in the case of level Jacobians. These transmittances are included only to retain consistency with the LBLRTM file structures. Consequently, postprocessing including the application of selected instrument functions is accomplished in a manner identical to that for radiances. Note that selecting brightness temperature in the postprocessing will not provide a meaningful result. In general, the input parameters for AJ calculations is described in the LBLRTM instructions where the required parameter is described, particularly note RECORD 1.2.b. The scanmrg option (IMRG=42,43 in this case) has not been tested and should be used with extreme caution.

Finally, a script has been included with ALL necessary files to run a sample set of Jacobian calculations. A second script has been provided to perform symmetric finite difference calculations to check the AJ results. A PowerPoint document with plots showing the results from the two scripts has been included. The file lblrtm_AJ_readme.txt explains the two scripts.

  1. Is it possible to scale the profile of one or more species?

Yes. The instructions for using this capability are provided in the lblrtm instructions. See records 1.3, 1.3.a and 1.3.b.

  1. Does LBLRTM include heavy molecule parameters (cross-sectional species)?

Heavy molecules (such as CCL4, F11, and others listed in Table II of the lblrtm_instruction manual) can be included in LBLRTM calculations by setting the IXSECT input variable to 1 and adding Record 2.2 or Record 3.7 to the LBLRTM TAPE5 An additional file (FSCDXS) and directory (xs) are required for these calculations and can be obtained from the cross sections repository (which is cloned with LBLRTM if the directions in the [Cloning][#cloning] section are followed) or from the LBLRTM example tar file (available in the LBLRTM v12.11 Release).

  1. Format of external surface emissivity/reflectivity files

Sea surface spectral emissivity and reflectivity files are provided with the example (available in the LBLRTM v12.11 Release). The files must have the file names of EMISSIVITY and REFLECTIVITY. The format is as follows:

Parameter Format Description
V1EMIS E10.3 Initial emissivity/reflectivity frequency value [cm-1]
V2EMIS E10.3 Finial emissivity/reflectivity frequency value [cm-1]
DVEMIS E10.3 Frequency Increment [cm-1]
NLIMEM I5 Number of spectral emissivity/reflectivity points in the file
ZEMIS E15.7 Emissivity at each spectral point

NOTE: It is assumed that the spectral emissivity/reflectivity points are equally spaced and there is a maximum number of points (see instructions).

  1. Absorption due to clouds/aerosols and LOWTRAN5 routines

Absorption due to clouds and aerosols can be computed in LBLRTM by setting the IAERSL flag in the input TAPE5 file (refer to instructions). This flag allows for LBLRTM to utilize the aerosol capabilities of LOWTRAN5.

  1. Solar Radiance

Solar radiance calculations can be performed by utilizing LBLRTM input options such as IEMIT=2 and a particular solar source function file SOLAR.RAD. A SOLAR.RAD file can be generated with program extract_solar available on the AER RT web site and the Kurucz solar source function. The Kurucz solar source function has been used in AER’s research in shortwave radiation and is based on theoretical radiative transfer calculations for the solar atmosphere. The solar source function is available is at a high spectral resolution (i.e. for monochromatic calculations) and 1 cm-1 resolution.

  1. Line coupling/mixing

Line coupling parameters are utilized in LBLRTM for O2, CO2 and CH4. The line coupling parameters are provided in the AER line parameter database (available in the AER Line File repository or on Zenodo) and are written to the line parameter input file (TAPE3) by LNFL.

  1. What is the appropriate reference for LBLRTM calculations in journal articles and presentations?

Clough SA, Shephard MW, Mlawer EJ, Delamere JS, Iacono MJ, Cady-Pereira K, Boukabara S, Brown PD.Atmospheric radiative transfer modeling: a summary of the AER codes • SHORT COMMUNICATION• J Quant. Spectrosc. and Radiat Transfer, 91, 233-244 (2005).

Also, please refer to the References Wiki Page for the complete list of references.

  1. How do you calculate fluxes?

Source code and instructions available: RADSUM

lblrtm's People

Contributors

inpolonsky avatar jrmascio avatar kcadyper avatar mjiacono avatar pernak18 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lblrtm's Issues

ERROR::read_file:: file not found wv-mt-ckd.nc

This error occurs whether I use examples or my own data, where should I download the missing file wv-mt-ckd.nc?

I hope you can take time out of your busy schedule to answer my questions. Thank you very much!

How to modify the spectral resolution of the output atmospheric transmittance/radiance

hello, Now that I get the spectral resolution of atmospheric radiometry very low, only 1 wavenumber (cm-1), I want to increase the spectral resolution to achieve higher precision and see the fine spectrum of atmospheric molecular radiation. But I don't know which parameters in the TAPE5 file can be modified to achieve this purpose?
I've tried modifying the DVSET and DVOUT in record 1.3, and the IMRG and IOD in record 1.2 to ensure that the program doesn't report errors, but I still can't change the spectral resolution of the output atmospheric 。
So, what parameters in TAPE5 should be changed to achieve higher resolution radiosity/transmittance results?
What is the resolution accuracy of LBLRTM?
c204bec46e10e80d981a036f918d715
855158ca564fe5ad0fe4d2e5f2b5acd
3e410a7e16798363c8cd1f8e0e9650d
TAPE5.txt
Thank you

the issue of compile

When I carry out "gmake -f make_lblrtm linuxGNUsgl", I get the problem as follows: Function 'nf_get_var' at (1) has no Implicit type ../src/read_module.f90:164:39:

To do

  1. Test feasibility of reduced DV SHRINK: more accurate than full DV SHRINK, but faster than no SHRINK

  2. Determine source of CO2 line coupling sensitivity to choice of v1.

  3. SCNMRG issue reported by Patrick Stegmann and Ling Liu around April 6, 2019.

My name is Dr. Patrick Stegmann and I am working on the CRTM team.
I have a problem with LBLRTM and I have been referred to you by Dr. Isaac Moradi from NASA in this matter.

Currently I am trying to produce layer-to-space transmittances with LBLRTM.
To my knowledge, this is a two-step process. First, the layer-to-space optical depths are computed and saved in ODdeflt_001 to 100 files (for 100 layers). This step completes successfully.

Then, the following section needs to be added to the TAPE5 input file in order to produce a TAPE20 from the ODdeflt_ files:

$ SCNMRG of precalculated KODFILS upwelling -> TAPE20
HI=0 F4=0 CN=0 AE=0 EM=0 SC=0 FI=0 PL=0 TS=0 AT=0 M=35 LS=0 MS=0 XS=0 0 0
ODdeflt_ 100
0.0005 605.0000 1253.0000 0 0 0 -0.0010 20 5
0.00000000

However, when I run that with LBLRTM it only produces the ODdeflt_ files and then throws the following error:

 $Id: lblrun,v 1.12 1999/04/15 13:53:45 paulv Exp $


     Using TAPE3 file tape3.data
    Using LBL_HOME: AER/aer_lblrtm_v12.8_lnfl_v3.1/lblrtm
     Using TAPE5 file TAPE5_IM

 lblrtm running.
 Begin date: 20200401
 Begin time: 235129UTC

forrtl: No such file or directory
forrtl: severe (29): file not found, unit 17, file .lblrtm_pstegmann_20200401_235129UTC/fort.17
Image              PC                Routine            Line        Source
lblrtm             000000000058BCA0  Unknown               Unknown  Unknown
lblrtm             00000000005622CC  Unknown               Unknown  Unknown
lblrtm             0000000000408AB4  Unknown               Unknown  Unknown
lblrtm             0000000000406F92  Unknown               Unknown  Unknown
lblrtm             0000000000403316  Unknown               Unknown  Unknown
libc.so.6          00007F23869F8495  Unknown               Unknown  Unknown
lblrtm             0000000000403209  Unknown               Unknown  Unknown
    Using Shippert mod

 Saving LBLRTM products (160608 . kB total) in projects/LBL/lblCRTM/case_AIRS/lbl_output....
  1. call AtoB(T,Qt,Tdat,Q,NT) gfortran.9.3 compile issue (see Stegmann email April 8); also reported by Zhao on April 10)

  2. Another compile issue from Stegmann (April 20)

I had to make some some modifications to lnfl.f and the makefile.commons to get LNFL and LBLRTM to compile on a
current version of Mac OS X with the homebrew GCC v9.3.0 :

  • in all makefile.commons : Added -std=legacy to FCFLAG for the GNU options
  • in lnfl.f : Changed

327 | COMMON /CPLMOL/ MOLCPL(38),NCPL

to

327 | COMMON /CPLMOL/ MOLCPL(mol_max),NCPL

with parameter mol_max > 38.

Otherwise gfortran will throw the following error due to stricter array bounds checking in the new version:

Error: Actual argument contains too few elements for dummy argument molcpl (38/47) at (1) ../src/lnfl.f:563:29:

  563 |             CALL CPSTOR_100 (molcpl,npl)
      |                             1
Error: Actual argument contains too few elements for dummy argument 'molcpl' (38/47) at (1) ../src/lnfl.f:3776:18:

 3776 |          STR(I) = STR(I)/(VNU(I)*(1.0-EXP(-BETA0*VNU(I))))               LN15580
      |                  1

about ZENITH ANGLE in RECORD3.2

Hi, we are writing TAPE5 of LBLRTM to simulate the radiance observed by satellite. But we can't understand the meaning of ZENITH ANGLE in RECORD3.2. Is it the satellite zenith angle? Why should it >90 when H1>H2? Because our satellite zenith angles are generally < 90......and what's the difference between H1 and HOBS when we do "satellite-type simulations"?

Cannot compile LNFL (source files are not in repository)

When I try to build LNFL, I get the following error:

make[1]: *** No rule to make target `util_gfortran.f90', needed by `build'.  Stop.
make: *** [linuxGNUsgl] Error 2

I believe this occurs because the files in LNFL/src/ are symbolic links and not actual fortran files. When I copy in an old util_gfortran.f90 file, I am able to compile LNFL.

multiple profiles

Hi. Is it possible to write multiple profiles in one TAPE5? And can it output multiple results (like radiances or optical depths) in one file (like TAPE27 or ODdeflt*)? I tried to copy the content in TAPE5 twice and then run LBLRTM, but it didn't output twice.

compile error in Windows

Hi.
I followed the tutorial step by step to compile the LNFL/LBLRTM in Windows 10 platform. But when it came to this step (Compile LNFL:>Build the Project.) the error appeared as follows.
error #5082: Syntax error, found '.' when expecting one of: ; BLOCK BLOCKDATA PROGRAM MODULE TYPE INTEGER REAL ... E:\LBLRTM\LNFL-master\src\util_dos.f90

I'm confused as to why it's going wrong and haven't found a solution. Any guidance would be appreciated.

On the calculation of atmospheric radiation when observing from an orbital altitude downwards.

Hello,I would like to calculate the observation of the radiation of the various layers of the atmosphere from the high altitude of the orbit downwards。
The observer is at an altitude of 300km, and the atmospheric gas radiation is observed 160km downward. That is, it can be regarded as simulating 160km atmospheric gas upward Radiation. It stands to reason that the lower the target altitude, the higher the final observed radiation should be, but why does the LBLRTM calculate the opposite?
Like what The blue is 1 km above the target and the green one is 30 km, so why does the observer observe that the radiation at 30 km is greater than 1 km? I understand, the observer looks down
The upward radiation of 1 km of atmosphere is certainly not avoidable, and the upward radiation of 30 km of atmosphere is also observed, so when the observation target is located at 1 km, the amount of upward radiation should include 30 km
So the actual amount of radiation represented by blue should be higher than that represented by green, so why does the LBLRTM calculation result be the opposite?
image
In this paper, the atmospheric radiation observed by the SABER satellite is simulated by LBLRTM, and it is obvious that the lower the target altitude, the greater the amount of radiation that can be observed. Consistent with my understanding.
image
Attached is a TAPE file with two different target heights
1km.zip
30km.zip
Thank you

N2 continuum absorption independent of N2 column density?

The N2 continuum absorption appears independent of the N2 column density, to the point that putting the N2 column density to 0 still leads to N2 continuum absorption!

If my understanding of the code is correct, looking at contnm.f90 line 216, I find that, for the continuum calculation, it is related to H2O and O2.

Excuse my ignorance, but shouldn't it we have
x_vmr_n2 = wk(22)/wtot
instead of the current
x_vmr_n2 = 1. - x_vmr_h2o - x_vmr_o2 ?

I guess there is a reason this line exists. However, I use LBLRTM to interpret ground based spectra and determine molecular abundances of various molecules: hence, this feature does not suit my needs, if I understand the code correctly.

about ZENITH ANGLE in RECORD3.2

Hi, we are writing TAPE5 of LBLRTM to simulate the radiance observed by satellite. But we can't understand the meaning of ZENITH ANGLE in RECORD3.2. Is it the satellite zenith angle? Why should it >90 when H1>H2? Because our satellite zenith angles are generally < 90......and what's the difference between H1 and HOBS when we do "satellite-type simulations"?

How to calculate the amount of radiation that reaches the observation position after the radiation of a molecule or all molecules in the atmosphere is transmitted by atmospheric radiative transmission (linear integration) under different observation methods

hello,How to calculate the amount of radiation that reaches the observation position after the radiation of a molecule or all molecules in the atmosphere is transmitted by atmospheric radiative transmission (linear integration) under different observation methods?
The different observation methods are shown in the figure below:
limb
vertical 1
vertical 2
For example, how do I change H1, H2, and angle in a tape5 file?
image
For example, how to calculate the amount of atmospheric radiation after radiation transmission over a certain distance by only one atmospheric molecule, several atmospheric molecules, and all atmospheric molecules, and how to set it in tape5?
How to consider the effects of atmospheric radiation ?

possible AJ bug in MW/FIR

Comparisons of LBL and MonoRTM (in P2255) showed that LBL temperature Jacobians are incorrect at low WV (less than 2.0 cm-1).

examples

Seems like we need a document on running the examples. I can work on that

Issue and Fix with comipiling the latest clone

Hi everyone,

I wanted to summarize my issue with cloning LBLRTM and building it from this repository. I am a little new to working with github so I ended up cloning the master branch instead of the latest release. I attempted to build it on a linux machine using gfortran to build it. At first It wouldn't build it because it couldn't find the netcdf libraries. I tried to put in the location of my netcdf library in the addlibs.inc file. However it still couldn't find -libnetcdff. The way my netcdf was built on my server was that there was a netcdf c version, and a separate netcdf fortran version. There wasn't a straight forward method to edit the addlibs.inc file I saw if the needed netcdf libraries were in different locations. So I eventually went to the netcdf bin directory, and typed the ./nc_config -libs command and got the needed library linkages to run netcdf. I edited the LD_FLAG in make_lblrtm to point to the exact locations on my machine where all the netcdf libraries were. I also had to include the hdf library. This built lblrtm. To get it to run I had to make sure the hdf library with in my library path.

LBL compile issue

LBL won't compile with pgf90: PGF90-S-0168-Incompatible size of common block mlatmx (../src/lblatm.f90)
0 inform, 0 warnings, 1 severes, 0 fatal for xmlatm;

Does compile with ifort.

Maybe XS is still hardwired to 38 or 40 somewhere?

LBLRTM v12.10 Clear Sky Radiance at extremely low VZA

Hi - I'm trying to use LBLRTM to calculate the clear sky radiance for a VZA = 84.345 degrees (hence angle is set at 95.655 in the TAPE5 below). However, I receive the following error:
"ERROR - FSCGEO"

LBLRTM v12.10 (compiled using Intel Fortran Compiler v2017 - both single and double precision versions give the same error).
AER v3.8 line file
Running on Oracle Enterprise Linux 7 (64 bit).
Please let me know if you require any additional info.

I can calculate the radiances (or layer optical depths) for VZA = 0.0, 16, 36, 55 and 72 without any issues.
I want to be able to compare the LBLRTM radiances at these angles with another RT code for a validation exercise. Please can you advise how I can calculate the radiances for such a low angle? If it's not possible, what is the limitation and how does this impact the ability to accurately calculate fluxes?

Many thanks in advance.

TAPE5 below:

$ TAPE5 generated for TRP STD Atmos., Dec 18 16:33:47 2020 UTC
HI=1 F4=1 CN=5 AE=0 EM=1 SC=0 FI=0 PL=0 TS=0 AM=1 MG=0 LA=0 OD=0 XS=0 00 00
50.0000 1650.0000 4.000E+00 0.000E+00 4.000E-02 3.600E+01 2.000E-04 1.000E-03 0
2.997E+02 1.000E+00
1 2 0 0 0 7 0 0 0 0.000 120.000
120.000 0.000 95.655
0.000 0.000 0.000 0.000 0.000
%%%%%

How to get upwelling TOA radiance in visible/swir?

I would like to simulate TOA total upwelling radiances in the visible/SWIR region. Having looked at the LBLRTM instructions, and online, I think what I have to do is run two TAPE5's, and I have copied what I have below.

  • generate solar file first - I can do this ok

My first TAPE 5:

$ Run 1 TAPE5, produces DW radiance and transmittance, set angle to sza. Copy the TAPE12 to SOL.PATH.T2
HI=1 F4=1 CN=1 AE=0 EM=1 SC=0 FI=0 PL=0 TS=0 AM=1 MG=0 LA=0 OD=0 XS=0 00 00
20513.00 21622.00 1.0 0.0 0.0 0.0000 0.000 0 0.0
0.0000 s
2 2 0 0 0
0.00 100.00 0.00

-1.
%

My second TAPE5
$ Run 2 TAPE5, produces UW radiance and transmittance, set angle to vza.
HI=1 F4=1 CN=1 AE=0 EM=1 SC=0 FI=0 PL=0 TS=0 AM=1 MG=0 LA=0 OD=0 XS=0 00 00
20513.00 21622.00 1.0 0.0 0.0 0.0000 0.000 0 0.0
294.2000 -1
2 2 0 0 0
100.00 0.00 180.00

-1.
$ Convolve transmittance with solar source, needs SOL.PATH.T2 and TAPE12 as input
HI=0 F4=0 CN=0 AE=0 EM=2 SC=0 FI=0 PL=0 TS=0 AM=0 MG=0 LA=0 MS=0 XS=0 0 0
2 2 2
-1.
$ Transfer to ASCII plotting data (TAPES 27 )
HI=0 F4=0 CN=0 AE=0 EM=0 SC=0 FI=0 PL=1 TS=0 AM=0 MG=0 LA=0 MS=0 XS=0 0 0

Plot title not used

20513.00 21622.00 10.2000 100.0000 5 0 13 0 1.000 0 0 0
0.0000 1.2000 7.0200 0.2000 4 0 1 1 0 0 0 3 27
-1.
%

Is this the correct procedure? It would be really handy to have some more examples to look at for running LBLRTM in different configurations,
Many thanks
Caroline

git clone LBLRTM.git - unable to checkout 'cross-sections' error

Hi,

I'm trying to clone the latest release of LBLRTM v12.11 following the instructions on the AER-RC/LBLRTM Github site, and I receive an error associated with the cross-sections. Please can you advise?

Many thanks,
Rich (output appended below - running on CentOS 7.9.2009)

-bash-4.2$ git clone --recursive [email protected]:AER-RC/LBLRTM.git
Cloning into 'LBLRTM'...
Enter passphrase for key '/home/bantges/.ssh/id_ed25519':
remote: Enumerating objects: 4337, done.
remote: Counting objects: 100% (89/89), done.
remote: Compressing objects: 100% (61/61), done.
remote: Total 4337 (delta 51), reused 54 (delta 27), pack-reused 4248
Receiving objects: 100% (4337/4337), 6.43 MiB | 3.63 MiB/s, done.
Resolving deltas: 100% (3100/3100), done.
Submodule 'aer_rt_utils' (https://github.com/AER-RC/aer_rt_utils.git) registered for path 'aer_rt_utils'
Submodule 'cross-sections' (https://github.com/AER-RC/cross-sections.git) registered for path 'cross-sections'
Cloning into 'aer_rt_utils'...
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 15 (delta 12), reused 15 (delta 12), pack-reused 0
Unpacking objects: 100% (15/15), done.
Submodule path 'aer_rt_utils': checked out '13f3a75ddd98fddcf0c4414031acd0d321be8569'
Cloning into 'cross-sections'...
remote: Enumerating objects: 542, done.
remote: Counting objects: 100% (542/542), done.
remote: Compressing objects: 100% (468/468), done.
remote: Total 542 (delta 77), reused 534 (delta 73), pack-reused 0
Receiving objects: 100% (542/542), 24.42 MiB | 20.00 MiB/s, done.
Resolving deltas: 100% (77/77), done.
fatal: reference is not a tree: dc9cfadfd002c594aea1764a61b38d7a7e525e1f
Unable to checkout 'dc9cfadfd002c594aea1764a61b38d7a7e525e1f' in submodule path 'cross-sections'
-bash-4.2$

RECORD 3.9

ISOTPL_HCODE is set to 14,but TAPE6 isotopologue input becomes 13

Question about analytic Jacobians/derivatives

Hi, i‘ve obtained the total upwelling solar radiance successfully using the LBLRTM, now i am going to calculate the analytic Jacobians/derivatives of the solar radiance for desired parameters. So how to calculate the analytic Jacobians/derivatives for the total upwelling solar radiance? Since I've read the example code(run_example_analytic_jacobian)but i think it may be different from frequency band which i want (the example code calculate the band of 500-1174cm-1,but i use the 2900-3100cm-1 ). Thank you!

About optical depths

Hi, I have some problems reading the optical depth of each layer. I successfully run LBLRTM on /run_example_USER_defined_upwelling in the example. As I read in the lblrtm_instructions, I set the IMRG to 1 in Tape5 to obtain the optical depth of each layer. Many unformatted files named with "ODdeflt_" are generated in the directory. But now the question is, how should I read the data in these files? Could you please give me some help? thank you

lnfl can't run

I have added the flag " -std=legacy "into the makefile.common ,however, there are still messages :

Note: The following floating-point exceptions are signalling: IEEE_UNDERFLOW_FLAG IEEE_DENORMAL
STOP LINFIL COMPLETE
49.98user 0.18system 0:50.32elapsed 99%CPU (0avgtext+0avgdata 11476maxresident)k

when I run the examples ./lbl_examples/TAPE3_files/run_lnfl.pl .
The lnfl codes are downloaded from the git clone "git clone --recursive [email protected]:AER-RC/LNFL.git".
And when I build the lnfl using make ,there are many warnings like :

Warning: Line truncated at (1) [-Wline-truncation]
COMMON /IFIL/ IRD,IPR,IPU,NWDR,LRC,ILNGTH,INLTE,IER,IPUOUT LN18920
1

Or

Warning: Possible change of value in conversion from REAL(8) to INTEGER(4) at (1) [-Wconversion]
../src/lnfl.f:2476:18:

         STR = STRSV/(VNU*(1.0-EXP(-BETA0*VNU)))                      LN12400
              1

How could I deal with it?
Thanks

about ZENITH ANGLE in RECORD3.2

Hi, we are writing TAPE5 of LBLRTM to simulate the radiance observed by satellite. But we can't understand the meaning of ZENITH ANGLE in RECORD3.2. Is it the satellite zenith angle? Why should it >90 when H1>H2? Because our satellite zenith angles are generally < 90......and what's the difference between H1 and HOBS when we do "satellite-type simulations"?

GCC8 breaks LBLRTM/LNFL

Couldn't build on a fresh Ubuntu 20.04 install. Make errors about number of arguments not matching. Track this down to a new "feature" on GCC8 which now treats that as an error. Adding the flag -std=legacy to makefile.common on both LBLRTM and LNFL allowed them to build to completion.

Corrected sections in makefile.common should read:

##############################################################

linux using gfortran and double precision

##############################################################

linuxGNUdbl:
${MAKE} -f ${MAKEFILE} all P_TYPE=dbl FC_TYPE=gnu PLTFRM=linux
FC=gfortran
FCFLAG="-fdefault-integer-8 -fdefault-real-8 -frecord-marker=4 -std=legacy"
UTIL_FILE=util_gfortran.f90

##############################################################

linux using gfortran and single precisions

##############################################################

linuxGNUsgl:
${MAKE} -f ${MAKEFILE} all P_TYPE=sgl FC_TYPE=gnu PLTFRM=linux
FC=gfortran
FCFLAG="-frecord-marker=4 -std=legacy"
UTIL_FILE=util_gfortran.f90

How to obtain band integrated values for TOA reflectance calculations?

I am trying to calculate TOA reflectance for Sentinel 2 Band 12. I tried using the merge flags while generating the TAPE5 file for LBLRTM, however I still get transmittance / radiance for individual wavelengths. Are there any other flags I need to consider? I am running them with the solar flag on, and have generated the SOLAR.RAD file from the solar-source-function repo. Are there any examples for this sort of calculation?

Compilation error in build folder in Ubuntu

Hi everyone, I am trying to install LBLRTM model in Ubuntu 20.04 sysem. I am getting following error during compilation:
make -f make_lblrtm linuxGNUdb
Warning: Named COMMON block ‘ifil’ at (1) shall be of the same size as elsewhere (144 vs 152 bytes) make[1]: *** No rule to make target '../src/util_gfortran.f90', needed by 'lblrtm_v12.15.1_linux_gnu_dbl.obj/util_gfortran.o'. Stop. make: *** [makefile.common:218: linuxGNUdbl] Error 2
I have followed the information given at here but could not solve it. Can you help me to solve this issue.

Thanks and regards,
Vijay Sagar

compilation_text.txt

using lblrtm to simulate the radiance of cloudy situation

I have trouble in the TAPE5 file for a cloudy situation . On the "Clouds and Aerosols" Chapter of lblrtm_instructions , it recommends that we had better input the optical depth of cloud in 'in_lblrtm_cld' file and lblrtm no longer supports the LOWTRN. But how could I get the hyperspectral optical depth of the certain hydrometeor profile? Could you please give me some advise if I want to use the GMI_GPROF date?

Getting error fort.17 (file not found) while running lblrtm_v12.13_linux_intel_sgl

Dear All,

Myself, Hari Prasad Kottu. I am trying to compute Taucoeff files for the CRTM.

While running lblrtm_v12.13_linux_intel_sgl I got the error as shown below.

forrtl: No such file or directory
forrtl: severe (29): file not found, unit 17, file /home/hari/temp/CRTM_coef-develop/workdir/IR/TauCoeffTest/profile01/angle1/mol7/band064/fort.17
Image PC Routine Line Source
lblrtm_v12.13_lin 00000000005D059E Unknown Unknown Unknown
lblrtm_v12.13_lin 00000000006009FC Unknown Unknown Unknown
lblrtm_v12.13_lin 00000000005BA828 bufin_ 106 util_linux_intel.f90
lblrtm_v12.13_lin 000000000041B22E xlayer_ 2359 lblrtm.f90
lblrtm_v12.13_lin 0000000000412AF5 MAIN__ 1079 lblrtm.f90
lblrtm_v12.13_lin 000000000040BCDE Unknown Unknown Unknown
libc-2.22.so 00002ABBDB7896E5 __libc_start_main Unknown Unknown
lblrtm_v12.13_lin 000000000040BBE9 Unknown Unknown Unknown

The compilation options I used for compiling the LBLRTM source code are given below.

linuxINTELsgl:
${MAKE} -f ${MAKEFILE} all P_TYPE=sgl FC_TYPE=intel PLTFRM=linux
FC=ifort
FCFLAG="-w -Vaxlib -g -traceback -fp-stack-check"
UTIL_FILE=util_linux_intel.f90

While running the lblrtm, it created the ODdeflt_01 to ODdeflt_100 files but failed to create the TAPE20 file. Please help me to resolve this problem.

Thanks and Regards,
Hari Prasad Kottu

compiling LBLRTM in Ubuntu

Meg Noah provided the following instructions for compiling LBLRTM on Ubuntu

sudo apt-get update
sudo apt-get upgrade
#install fortran
sudo atp-get install gfortran
#install cmake
sudo apt install -y cmake
#install git
sudo apt install git
#install geany
sudo apt-get install geany
#get LBLRTM
git clone --recursive https://github.com/AER-RC/LBLRTM.git

#modify make_lblrtm, 
#add util_gfortran.f90 to SRCS=
#comment out netcdf references and remove mt_ckd_h2o_module 
#remove read_module
#add compile of lblparams
$(OBJPATH)/lblparams.o:       $(SRCPATH)/lblparams.f90
$(FC) -c $(FCFLAG) -I$(SRCPATH) -I$(INC_NETCDF) $< -o $@

lblparams.mod:  $(SRCPATH)/lblparams.f90
$(FC) -c $(FCFLAG) -I$(INC_NETCDF) $< -o $(OBJPATH)/lblparams.o

Question about Jacobians/derivatives

in the Frequently Asked Questions mentioned "A PowerPoint document with plots showing the results from the two scripts has been included" in the last paragraph,but i didn't find it。can you tell me?

Record 3.2H

i want to use horizontal path(ITYPE=1). How can add this record into tape5 file.

How to get the solar reflection function from 'SOL.REFLECTANCE'

Hi, I want to get the upwelling infrared radiation by setting INFLAG and IOTFLG=2 in record 1.2.1 in the lblrtm manual. The instruction says the solar reflection function from 'SOL.REFLECTANCE' is needed when IOTFLG=2. So how to get the file 'SOL.REFLECTANCE'?Thank you very much.

Example Codes/Tape files for LBLRTM/LNFL

Hi,
I have been looking around for example tape files for LNFL and LBLRTM and am unable to find it. Some of the old documents suggest that it used to be bundled with the .tar files before the shift to github. Is there a way to find some sample codes to understand and use LBLRTM/LNFL?

TAPE5 Format for LBLRRTM

I can't understand the TAPE5 for LBLRTM ,could you please give me an accurate interpretation.
for example

$ Simple TAPE5
 HI=1 F4=1 CN=1 AE=0 EM=1 SC=0 FI=0 PL=0 TS=0 AM=1 MG=0 LA=0 OD=0 XS=0   00   00
 1000.0000 1200.0000       0.0                 0.0       0.0    0.0000     0.000    0            0.0
  294.2000    1.000  
    6    2    0    0    0        
   100.000     0.000   180.000

-1.
$ Transfer to ASCII plotting data
 HI=0 F4=0 CN=0 AE=0 EM=0 SC=0 FI=0 PL=1 TS=0 AM=0 MG=0 LA=0 MS=0 XS=0    0    0
 1000.0000 1200.0000   10.2000  100.0000    5    0   12    0     1.000 0  0    0
    0.0000    1.2000    7.0200    0.2000    4    0    1    1    0    0 0    3 27
 1000.0000 1200.0000   10.2000  100.0000    5    0   12    0     1.000 0  0    0
    0.0000    1.2000    7.0200    0.2000    4    0    1    1    1    0 0    3 28
-1.
% US STD Atmosphere: Nadir viewing from 100 km down to the surface

there are too many terms that i can not understand it.

unable to compile v12.11

I'm unable to compile v12.11 the log below is for linuxINTELdbl but I've the same issue for INTELsgl

make -f make_lblrtm linuxINTELdbl


lblrtm_v12.11_linux_intel_dbl Makefile

This Makefile was designed for the linux platform.

It uses the ifort compiler, with the following options:
-r8 -i8 -w -Vaxlib

The source files used are as follows:

  lblrtm.f90 oprop.f90 contnm.f90 xmerge.f90 testmm.f90 lblatm.f90 lbllow.f90 postsub.f90 pltlbl.f90 lbldum.f90 solar.f90 nonlte.f90 fftscn_dbl.f90 util_linux_intel.f90 phys_consts.f90 planet_earth.f90 lblparams.f90 struct_types.f90 solar_cycle.f90

The object files used are as follows:

  lblrtm.o oprop.o contnm.o xmerge.o testmm.o lblatm.o lbllow.o postsub.o pltlbl.o lbldum.o solar.o nonlte.o fftscn_dbl.o util_linux_intel.o phys_consts.o planet_earth.o lblparams.o struct_types.o solar_cycle.o

The object file path is as follows:
lblrtm_v12.11_linux_intel_dbl.obj

The executable will be:
../lblrtm_v12.11_linux_intel_dbl

make in progress ...

make[1]: *** No rule to make target '../src/util_linux_intel.f90', needed by 'lblrtm_v12.11_linux_intel_dbl.obj/util_linux_intel.o'. Stop.
makefile.common:258: recipe for target 'linuxINTELdbl' failed
make: *** [linuxINTELdbl] Error 2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.