16     return 1-log10(0.9*
x-12.5);
 
   20     return log10(0.9*
x-12.5);
 
   23     static int firstCall = 1;
 
   24     static int ib[4]={-1,-1,-1,-1};
 
   28     static float virtual_coef_A[2],virtual_coef_B[2],virtual_rat;
 
   33     float Rrs510A,Rrs510B,mbr,brdi,poc_mbr,poc_brdi,w_mbr,w_brdi;
 
   35     static float mbr_coef[4],brdi_coef[6];
 
   45         const char *subsensorDir;
 
   47         if ((filedir = getenv(
"OCDATAROOT")) == 
NULL) {
 
   48             printf(
"-E- %s: OCDATAROOT env variable undefined.\n", __FILE__);
 
   61         strcat(
filename, 
"poc_stramski_hybrid.json");
 
   68             printf(
"the file %s not exist\n",
filename);
 
   78         wv=json_object_get(json,
"poc_wave");
 
   79         line=json_string_value(wv);
 
   91         wv=json_object_get(json,
"poc_mbr_coef");
 
   92         line=json_string_value(wv);
 
   95             mbr_coef[
i++]=atof(
line);
 
  101         wv=json_object_get(json,
"poc_brdi_coef");
 
  102         line=json_string_value(wv);
 
  105             brdi_coef[
i++]=atof(
line);
 
  124                 virtual_coef_A[0]=-0.00008;
 
  125                 virtual_coef_A[1]= 1.085;
 
  126                 virtual_coef_B[0]=-0.00041 ;
 
  127                 virtual_coef_B[1]= 1.104;
 
  131                 virtual_coef_A[0]=-0.0000004 ;
 
  132                 virtual_coef_A[1]= 1.068;
 
  133                 virtual_coef_B[0]=-0.00130;
 
  134                 virtual_coef_B[1]= 1.291;
 
  138                 virtual_coef_A[0]=-0.000070;
 
  139                 virtual_coef_A[1]= 1.096 ;
 
  140                 virtual_coef_B[0]=-0.00094;
 
  141                 virtual_coef_B[1]= 1.221;
 
  145                 printf(
"-E- %s line %d: coefficients to calculate virtual Rrs(510) are not defined for Stramski hybrid POC\n",
 
  157         if (ib[0] < 0 || ib[1] < 0|| ib[3] < 0) {
 
  158             printf(
"-E- %s line %d: required bands not available for Stramski hybrid POC\n",
 
  164     for(
i=0;
i<nwave;
i++){
 
  165         if(ib[
i]>0 && 
Rrs[ib[
i]]<0)
 
  171             Rrs_temp[
i]=
Rrs[ib[
i]];
 
  174             Rrs_temp[
i]=
Rrs[ib[
i]];
 
  175         Rrs_temp[3]=
Rrs[ib[3]];
 
  179         Rrs510A=virtual_coef_A[0]+virtual_coef_A[1]*Rrs_temp[1];
 
  181             Rrs510B=virtual_coef_B[0]+virtual_coef_B[1]*Rrs_temp[2];
 
  183             Rrs510B=virtual_coef_B[0]+virtual_coef_B[1]*Rrs_temp[3];
 
  185         Rrs_temp[2]=virtual_rat*Rrs510A+(1-virtual_rat)*Rrs510B;
 
  189         ratio[
i]=Rrs_temp[
i]/Rrs_temp[3];
 
  192         if(isnan(ratio[0])||isnan(ratio[1])||isnan(ratio[2]))
 
  193             mbr=
MAX(
MAX(ratio[0],ratio[1]),ratio[2]);
 
  194         else if(ratio[2]<1.2 && Rrs_temp[2]>Rrs_temp[1]&&Rrs_temp[2]>Rrs_temp[0])
 
  195             mbr=
MAX(
MAX(ratio[0],ratio[1]),ratio[2]);
 
  197             mbr=
MAX(ratio[0],ratio[1]);
 
  200         mbr=
MAX(
MAX(ratio[0],ratio[1]),ratio[2]);
 
  205         poc_mbr+=mbr_coef[
i]*pow(mbr,
i);
 
  206     poc_mbr=pow(10.,poc_mbr);
 
  208     brdi=(Rrs_temp[0]-Rrs_temp[3])/Rrs_temp[1];
 
  211         poc_brdi+=brdi_coef[
i]*pow(brdi,
i);
 
  212     poc_brdi=pow(10.,poc_brdi);
 
  216     else if(poc_brdi<15.)
 
  218     else if(poc_brdi>25.)
 
  233     w_mbr=(w_mbr+(1-w_brdi))*0.5;
 
  241         poc=poc_brdi*w_brdi+poc_mbr*w_mbr;