|
ocssw
1.0
|
00001 #ifndef _GIOP_H 00002 #define _GIOP_H 00003 00004 00005 #define GIOPMAXPAR NBANDS 00006 00007 /* optimization routines */ 00008 #define AMOEBA 0 00009 #define LEVMARQ 1 00010 #define SVDFIT 3 00011 00012 /* adg function types */ 00013 #define ADGTAB 0 00014 #define ADGS 1 00015 #define ADGSQAA 2 00016 #define ADGSOBPG 3 00017 00018 /* bbp function types */ 00019 #define BBPTAB 0 00020 #define BBPS 1 00021 #define BBPSHAL 2 00022 #define BBPSQAA 3 00023 #define BBPSPML 4 00024 #define BBPSCIOTTI 5 00025 #define BBPSMM01 6 00026 #define BBPSLAS 7 00027 #define BBPLAS 8 00028 #define BBPLASFIX 9 00029 #define BBPQAAFIX 10 00030 00031 /* aph function types */ 00032 #define APHTAB 0 00033 #define APHGAUSS 1 00034 #define APHBRICAUD 2 00035 #define APHCIOTTI 3 00036 00037 /* rrs function types */ 00038 #define RRSGRD 0 00039 #define RRSFOQ 1 00040 00041 00042 typedef struct giop_ctl_str { 00043 00044 int npar; /* # optimized params */ 00045 int maxiter; /* max iterations */ 00046 00047 int fit_opt; /* optimization routine */ 00048 int aph_opt; /* aph function type */ 00049 int adg_opt; /* adg function type */ 00050 int bbp_opt; /* bbp function type */ 00051 int rrs_opt; /* rrs function type */ 00052 int ts_opt; /* temperature & salinity */ 00053 int wt_opt; /* do we have input wts */ 00054 00055 int nwave; /* # fit wavelengths */ 00056 float wave [NBANDS]; /* fit wavelengths */ 00057 int bindx[NBANDS]; /* index to sensor wave */ 00058 float aw [NBANDS]; /* aw per fit wave */ 00059 float bbw [NBANDS]; /* bbw per fit wave */ 00060 float wts [NBANDS]; /* input Rrs wts */ 00061 00062 float grd[2]; /* RRSGRD param */ 00063 float foq[NBANDS]; /* RRSFOQ variable */ 00064 float aph_s; /* APHS spectral param */ 00065 float adg_s; /* ADGS spectral param */ 00066 float bbp_s; /* BBPS spectral param */ 00067 float aph_w; /* APHS referance wave */ 00068 float adg_w; /* ADGS reference wave */ 00069 float bbp_w; /* BBPS reference wave */ 00070 00071 float chl; /* Input chlorophyll */ 00072 00073 char aph_tab_file[FILENAME_MAX]; 00074 int aph_tab_nw; /* elements in aph tab */ 00075 float *aph_tab_w; /* aph tab wavelengths */ 00076 float **aph_tab_s; /* aph tab values */ 00077 int aph_nvec; /* number of eigenvect */ 00078 00079 char adg_tab_file[FILENAME_MAX]; 00080 int adg_tab_nw; /* elements in adg tab */ 00081 float *adg_tab_w; /* adg tab wavelengths */ 00082 float **adg_tab_s; /* adg tab values */ 00083 int adg_nvec; /* number of eigenvect */ 00084 00085 char bbp_tab_file[FILENAME_MAX]; 00086 int bbp_tab_nw; /* elements in bbp tab */ 00087 float *bbp_tab_w; /* bbp tab wavelengths */ 00088 float **bbp_tab_s; /* bbp tab values */ 00089 int bbp_nvec; /* number of eigenvect */ 00090 00091 double par[GIOPMAXPAR]; /* starting params */ 00092 double len[GIOPMAXPAR]; /* characteristic length*/ 00093 00094 } giopstr; 00095 00096 void set_giop_aph_s(giopstr *g, float aph_s); 00097 void set_giop_adg_s(giopstr *g, float adg_s); 00098 void set_giop_bbp_s(giopstr *g, float bbp_s); 00099 void set_giop_aph_t(giopstr *g, float aphw[], float aphs[], int aphn); 00100 00101 float* giop_get_chl_pointer(); 00102 float* giop_get_adg_pointer(); 00103 float* giop_get_aph_pointer(); 00104 float* giop_get_bbp_pointer(); 00105 float** giop_get_fitpar_pointer(); 00106 00107 #endif
1.7.6.1