NASA Logo
Ocean Color Science Software

ocssw V2022
geolocate_oci.cpp File Reference
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
#include <gsl/gsl_blas.h>
#include <gsl/gsl_linalg.h>
#include <gsl/gsl_matrix_double.h>
#include <boost/algorithm/string/trim.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/numeric/ublas/matrix.hpp>
#include "geolocate_oci.h"
#include <netcdf>
#include "nc4utils.h"
#include "timeutils.h"
#include <clo.h>
#include "global_attrs.h"
#include <terrain.h>
#include <genutils.h>
Include dependency graph for geolocate_oci.cpp:

Go to the source code of this file.

Macros

#define ERROR_EXIT(dim)   {if(dim==0){printf("--Error--: the dimension %s is zero. Exiting. See line %d in file %s",#dim,__LINE__, __FILE__);exit(EXIT_FAILURE);} }
 

Functions

void read_def_eph (string ephfile, vector< double > &otime, vector< vector< double >> &posj, vector< vector< double >> &velj, double l1aEpoch)
 
int geolocate_oci (string l1a_filename, string geo_lut_filename, geo_struct &geoLUT, string l1b_filename, string dem_file, bool radiance, string doi, const string ephFile, string pversion)
 
int j2000_to_ecr (int32_t iyr, int32_t idy, double sec, double ecmat[3][3])
 
int j2000_to_mod (int32_t iyr, int32_t idy, double sec, double j2mod[3][3])
 
int get_nut (int32_t iyr, int32_t idy, double xnut[3][3])
 
int ephparms (double t, double &xls, double &gs, double &xlm, double &omega)
 
int nutate (double t, double xls, double gs, double xlm, double omega, double &dpsi, double &eps, double &epsm)
 
int get_ut1 (int32_t iyr, int32_t idy, double &ut1utc)
 
int gha2000 (int32_t iyr, double day, double &gha)
 
int mtoq (double rm[3][3], double q[4])
 
int qprod (double q1[4], float q2[4], double q3[4])
 
int qprod (float q1[4], float q2[4], float q3[4])
 
int orb_interp (size_t n_orb_rec, size_t sdim, double *torb, orb_array *p, orb_array *v, double *time, orb_array *posi, orb_array *veli)
 
int q_interp (size_t n_att_rec, size_t sdim, double *tq, quat_array *q, double *time, quat_array *qi)
 
int tilt_interp (size_t n_tilts, size_t sdim, double *ttilt, float *tiltin, double *time, float *tilt)
 
int l_sun (size_t sdim, int32_t iyr, int32_t iday, double *sec, orb_array *sunr, double *rs)
 
int sun2000 (size_t sdim, int32_t iyr, int32_t idy, double *sec, orb_array *sun, double *rs)
 
int qtom (float q[4], double rm[3][3])
 
int scan_ell (float p[3], double sm[3][3], double coef[10])
 
int oci_geonav (const char *dem_file, float pos[3], float vel[3], double smat[3][3], double coef[10], float sunr[3], float **pview, size_t npix, double *delt, float *xlat, float *xlon, short *solz, short *sola, short *senz, short *sena, short *height, float &lonwest, float &loneast, float &latsouth, float &latnorth)
 
int mat2rpy (float pos[3], float vel[3], double smat[3][3], float rpy[3])
 

Macro Definition Documentation

◆ ERROR_EXIT

#define ERROR_EXIT (   dim)    {if(dim==0){printf("--Error--: the dimension %s is zero. Exiting. See line %d in file %s",#dim,__LINE__, __FILE__);exit(EXIT_FAILURE);} }

Definition at line 23 of file geolocate_oci.cpp.

Function Documentation

◆ ephparms()

int ephparms ( double  t,
double &  xls,
double &  gs,
double &  xlm,
double &  omega 
)

Definition at line 939 of file geolocate_oci.cpp.

◆ geolocate_oci()

int geolocate_oci ( string  l1a_filename,
string  geo_lut_filename,
geo_struct geoLUT,
string  l1b_filename,
string  dem_file,
bool  radiance,
string  doi,
const string  ephFile,
string  pversion 
)

Definition at line 117 of file geolocate_oci.cpp.

◆ get_nut()

int get_nut ( int32_t  iyr,
int32_t  idy,
double  xnut[3][3] 
)

Definition at line 911 of file geolocate_oci.cpp.

◆ get_ut1()

int get_ut1 ( int32_t  iyr,
int32_t  idy,
double &  ut1utc 
)

Definition at line 999 of file geolocate_oci.cpp.

◆ gha2000()

int gha2000 ( int32_t  iyr,
double  day,
double &  gha 
)

Definition at line 1048 of file geolocate_oci.cpp.

◆ j2000_to_ecr()

int j2000_to_ecr ( int32_t  iyr,
int32_t  idy,
double  sec,
double  ecmat[3][3] 
)

Definition at line 819 of file geolocate_oci.cpp.

◆ j2000_to_mod()

int j2000_to_mod ( int32_t  iyr,
int32_t  idy,
double  sec,
double  j2mod[3][3] 
)

Definition at line 876 of file geolocate_oci.cpp.

◆ l_sun()

int l_sun ( size_t  sdim,
int32_t  iyr,
int32_t  iday,
double *  sec,
orb_array sunr,
double *  rs 
)

Definition at line 1337 of file geolocate_oci.cpp.

◆ mat2rpy()

int mat2rpy ( float  pos[3],
float  vel[3],
double  smat[3][3],
float  rpy[3] 
)

Definition at line 1701 of file geolocate_oci.cpp.

◆ mtoq()

int mtoq ( double  rm[3][3],
double  q[4] 
)

Definition at line 1080 of file geolocate_oci.cpp.

◆ nutate()

int nutate ( double  t,
double  xls,
double  gs,
double  xlm,
double  omega,
double &  dpsi,
double &  eps,
double &  epsm 
)

Definition at line 968 of file geolocate_oci.cpp.

◆ oci_geonav()

int oci_geonav ( const char *  dem_file,
float  pos[3],
float  vel[3],
double  smat[3][3],
double  coef[10],
float  sunr[3],
float **  pview,
size_t  npix,
double *  delt,
float *  xlat,
float *  xlon,
short *  solz,
short *  sola,
short *  senz,
short *  sena,
short *  height,
float &  lonwest,
float &  loneast,
float &  latsouth,
float &  latnorth 
)

Definition at line 1486 of file geolocate_oci.cpp.

◆ orb_interp()

int orb_interp ( size_t  n_orb_rec,
size_t  sdim,
double *  torb,
orb_array p,
orb_array v,
double *  time,
orb_array posi,
orb_array veli 
)

Definition at line 1139 of file geolocate_oci.cpp.

◆ q_interp()

int q_interp ( size_t  n_att_rec,
size_t  sdim,
double *  tq,
quat_array q,
double *  time,
quat_array qi 
)

Definition at line 1249 of file geolocate_oci.cpp.

◆ qprod() [1/2]

int qprod ( double  q1[4],
float  q2[4],
double  q3[4] 
)

Definition at line 1117 of file geolocate_oci.cpp.

◆ qprod() [2/2]

int qprod ( float  q1[4],
float  q2[4],
float  q3[4] 
)

Definition at line 1128 of file geolocate_oci.cpp.

◆ qtom()

int qtom ( float  q[4],
double  rm[3][3] 
)

Definition at line 1433 of file geolocate_oci.cpp.

◆ read_def_eph()

void read_def_eph ( string  ephfile,
vector< double > &  otime,
vector< vector< double >> &  posj,
vector< vector< double >> &  velj,
double  l1aEpoch 
)

Read a predicted PACE ephemeris file and convert vectors to ECR.

Parameters
ephfileName of the ephemeris file. Expected to be non-null and not empty.
otimeOut-parameter indicating time of each record.
posjIn/out-parameter indicating position of each record.
veljIn/out-parameter indicating velocity of each record.
l1aEpochUnix time of the start of the L1A file's first day

Definition at line 51 of file geolocate_oci.cpp.

◆ scan_ell()

int scan_ell ( float  p[3],
double  sm[3][3],
double  coef[10] 
)

Definition at line 1449 of file geolocate_oci.cpp.

◆ sun2000()

int sun2000 ( size_t  sdim,
int32_t  iyr,
int32_t  idy,
double *  sec,
orb_array sun,
double *  rs 
)

Definition at line 1362 of file geolocate_oci.cpp.

◆ tilt_interp()

int tilt_interp ( size_t  n_tilts,
size_t  sdim,
double *  ttilt,
float *  tiltin,
double *  time,
float *  tilt 
)

Definition at line 1306 of file geolocate_oci.cpp.