|  | @@ -364,8 +364,8 @@ namespace nmie {
 | 
	
		
			
				|  |  |    // Modify scattering (theta) angles                                       //
 | 
	
		
			
				|  |  |    // ********************************************************************** //
 | 
	
		
			
				|  |  |    void MultiLayerMie::SetAngles(const std::vector<double>& angles) {
 | 
	
		
			
				|  |  | -    areIntCoeffsCalc_ = false;
 | 
	
		
			
				|  |  | -    areExtCoeffsCalc_ = false;
 | 
	
		
			
				|  |  | +    isIntCoeffsCalc_ = false;
 | 
	
		
			
				|  |  | +    isExtCoeffsCalc_ = false;
 | 
	
		
			
				|  |  |      isMieCalculated_ = false;
 | 
	
		
			
				|  |  |      theta_ = angles;
 | 
	
		
			
				|  |  |    }
 | 
	
	
		
			
				|  | @@ -375,8 +375,8 @@ namespace nmie {
 | 
	
		
			
				|  |  |    // Modify size of all layers                                             //
 | 
	
		
			
				|  |  |    // ********************************************************************** //
 | 
	
		
			
				|  |  |    void MultiLayerMie::SetLayersSize(const std::vector<double>& layer_size) {
 | 
	
		
			
				|  |  | -    areIntCoeffsCalc_ = false;
 | 
	
		
			
				|  |  | -    areExtCoeffsCalc_ = false;
 | 
	
		
			
				|  |  | +    isIntCoeffsCalc_ = false;
 | 
	
		
			
				|  |  | +    isExtCoeffsCalc_ = false;
 | 
	
		
			
				|  |  |      isMieCalculated_ = false;
 | 
	
		
			
				|  |  |      size_param_.clear();
 | 
	
		
			
				|  |  |      double prev_layer_size = 0.0;
 | 
	
	
		
			
				|  | @@ -396,8 +396,8 @@ namespace nmie {
 | 
	
		
			
				|  |  |    // Modify refractive index of all layers                                  //
 | 
	
		
			
				|  |  |    // ********************************************************************** //
 | 
	
		
			
				|  |  |    void MultiLayerMie::SetLayersIndex(const std::vector< std::complex<double> >& index) {
 | 
	
		
			
				|  |  | -    areIntCoeffsCalc_ = false;
 | 
	
		
			
				|  |  | -    areExtCoeffsCalc_ = false;
 | 
	
		
			
				|  |  | +    isIntCoeffsCalc_ = false;
 | 
	
		
			
				|  |  | +    isExtCoeffsCalc_ = false;
 | 
	
		
			
				|  |  |      isMieCalculated_ = false;
 | 
	
		
			
				|  |  |      refr_index_ = index;
 | 
	
		
			
				|  |  |    }
 | 
	
	
		
			
				|  | @@ -419,8 +419,8 @@ namespace nmie {
 | 
	
		
			
				|  |  |    // ********************************************************************** //
 | 
	
		
			
				|  |  |    // ********************************************************************** //
 | 
	
		
			
				|  |  |    void MultiLayerMie::SetPECLayer(int layer_position) {
 | 
	
		
			
				|  |  | -    areIntCoeffsCalc_ = false;
 | 
	
		
			
				|  |  | -    areExtCoeffsCalc_ = false;
 | 
	
		
			
				|  |  | +    isIntCoeffsCalc_ = false;
 | 
	
		
			
				|  |  | +    isExtCoeffsCalc_ = false;
 | 
	
		
			
				|  |  |      isMieCalculated_ = false;
 | 
	
		
			
				|  |  |      if (layer_position < 0)
 | 
	
		
			
				|  |  |        throw std::invalid_argument("Error! Layers are numbered from 0!");
 | 
	
	
		
			
				|  | @@ -432,8 +432,8 @@ namespace nmie {
 | 
	
		
			
				|  |  |    // Set maximun number of terms to be used                                 //
 | 
	
		
			
				|  |  |    // ********************************************************************** //
 | 
	
		
			
				|  |  |    void MultiLayerMie::SetMaxTerms(int nmax) {
 | 
	
		
			
				|  |  | -    areIntCoeffsCalc_ = false;
 | 
	
		
			
				|  |  | -    areExtCoeffsCalc_ = false;
 | 
	
		
			
				|  |  | +    isIntCoeffsCalc_ = false;
 | 
	
		
			
				|  |  | +    isExtCoeffsCalc_ = false;
 | 
	
		
			
				|  |  |      isMieCalculated_ = false;
 | 
	
		
			
				|  |  |      nmax_preset_ = nmax;
 | 
	
		
			
				|  |  |    }
 | 
	
	
		
			
				|  | @@ -454,8 +454,8 @@ namespace nmie {
 | 
	
		
			
				|  |  |    // Clear layer information                                                //
 | 
	
		
			
				|  |  |    // ********************************************************************** //
 | 
	
		
			
				|  |  |    void MultiLayerMie::ClearLayers() {
 | 
	
		
			
				|  |  | -    areIntCoeffsCalc_ = false;
 | 
	
		
			
				|  |  | -    areExtCoeffsCalc_ = false;
 | 
	
		
			
				|  |  | +    isIntCoeffsCalc_ = false;
 | 
	
		
			
				|  |  | +    isExtCoeffsCalc_ = false;
 | 
	
		
			
				|  |  |      isMieCalculated_ = false;
 | 
	
		
			
				|  |  |      size_param_.clear();
 | 
	
		
			
				|  |  |      refr_index_.clear();
 | 
	
	
		
			
				|  | @@ -760,7 +760,7 @@ namespace nmie {
 | 
	
		
			
				|  |  |    //**********************************************************************************//
 | 
	
		
			
				|  |  |    void MultiLayerMie::ExtScattCoeffs() {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    areExtCoeffsCalc_ = false;
 | 
	
		
			
				|  |  | +    isExtCoeffsCalc_ = false;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      const std::vector<double>& x = size_param_;
 | 
	
		
			
				|  |  |      const std::vector<std::complex<double> >& m = refr_index_;
 | 
	
	
		
			
				|  | @@ -914,7 +914,7 @@ namespace nmie {
 | 
	
		
			
				|  |  |          bn_[n] = PsiXL[n + 1]/ZetaXL[n + 1];
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      }  // end of for an and bn terms
 | 
	
		
			
				|  |  | -    areExtCoeffsCalc_ = true;
 | 
	
		
			
				|  |  | +    isExtCoeffsCalc_ = true;
 | 
	
		
			
				|  |  |    }  // end of MultiLayerMie::ExtScattCoeffs(...)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -954,14 +954,14 @@ namespace nmie {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      const std::vector<double>& x = size_param_;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    areIntCoeffsCalc_ = false;
 | 
	
		
			
				|  |  | -    areExtCoeffsCalc_ = false;
 | 
	
		
			
				|  |  | +    isIntCoeffsCalc_ = false;
 | 
	
		
			
				|  |  | +    isExtCoeffsCalc_ = false;
 | 
	
		
			
				|  |  |      isMieCalculated_ = false;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // Calculate scattering coefficients
 | 
	
		
			
				|  |  |      ExtScattCoeffs();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    if (!areExtCoeffsCalc_)
 | 
	
		
			
				|  |  | +    if (!isExtCoeffsCalc_) // TODO seems to be unreachable
 | 
	
		
			
				|  |  |        throw std::invalid_argument("Calculation of scattering coefficients failed!");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // Initialize the scattering parameters
 | 
	
	
		
			
				|  | @@ -1063,10 +1063,10 @@ namespace nmie {
 | 
	
		
			
				|  |  |    // ********************************************************************** //
 | 
	
		
			
				|  |  |    // ********************************************************************** //
 | 
	
		
			
				|  |  |    void MultiLayerMie::IntScattCoeffs() {
 | 
	
		
			
				|  |  | -    if (!areExtCoeffsCalc_)
 | 
	
		
			
				|  |  | +    if (!isExtCoeffsCalc_)
 | 
	
		
			
				|  |  |        throw std::invalid_argument("(IntScattCoeffs) You should calculate external coefficients first!");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    areIntCoeffsCalc_ = false;
 | 
	
		
			
				|  |  | +    isIntCoeffsCalc_ = false;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      std::complex<double> c_one(1.0, 0.0);
 | 
	
		
			
				|  |  |      std::complex<double> c_zero(0.0, 0.0);
 | 
	
	
		
			
				|  | @@ -1074,26 +1074,26 @@ namespace nmie {
 | 
	
		
			
				|  |  |      const int L = refr_index_.size();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // we need to fill
 | 
	
		
			
				|  |  | -    // std::vector< std::vector<std::complex<double> > > aln_, bln_, cnl_, dnl_;
 | 
	
		
			
				|  |  | +    // std::vector< std::vector<std::complex<double> > > aln_, bln_, cnl_, dln_;
 | 
	
		
			
				|  |  |      //     for n = [0..nmax_) and for l=[L..0)
 | 
	
		
			
				|  |  |      // TODO: to decrease cache miss outer loop is with n and inner with reversed l
 | 
	
		
			
				|  |  |      // at the moment outer is forward l and inner in n
 | 
	
		
			
				|  |  |      aln_.resize(L + 1);
 | 
	
		
			
				|  |  |      bln_.resize(L + 1);
 | 
	
		
			
				|  |  | -    cnl_.resize(L + 1);
 | 
	
		
			
				|  |  | -    dnl_.resize(L + 1);
 | 
	
		
			
				|  |  | +    cln_.resize(L + 1);
 | 
	
		
			
				|  |  | +    dln_.resize(L + 1);
 | 
	
		
			
				|  |  |      for (auto& element:aln_) element.resize(nmax_);
 | 
	
		
			
				|  |  |      for (auto& element:bln_) element.resize(nmax_);
 | 
	
		
			
				|  |  | -    for (auto& element:cnl_) element.resize(nmax_);
 | 
	
		
			
				|  |  | -    for (auto& element:dnl_) element.resize(nmax_);
 | 
	
		
			
				|  |  | +    for (auto& element:cln_) element.resize(nmax_);
 | 
	
		
			
				|  |  | +    for (auto& element:dln_) element.resize(nmax_);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // Yang, paragraph under eq. A3
 | 
	
		
			
				|  |  |      // a^(L + 1)_n = a_n, d^(L + 1) = 1 ...
 | 
	
		
			
				|  |  |      for (int i = 0; i < nmax_; ++i) {
 | 
	
		
			
				|  |  |        aln_[L][i] = an_[i];
 | 
	
		
			
				|  |  |        bln_[L][i] = bn_[i];
 | 
	
		
			
				|  |  | -      cnl_[L][i] = c_one;
 | 
	
		
			
				|  |  | -      dnl_[L][i] = c_one;
 | 
	
		
			
				|  |  | +      cln_[L][i] = c_one;
 | 
	
		
			
				|  |  | +      dln_[L][i] = c_one;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      std::vector<std::complex<double> > z(L), z1(L);
 | 
	
	
		
			
				|  | @@ -1134,20 +1134,20 @@ namespace nmie {
 | 
	
		
			
				|  |  |          auto denomZeta = m1[l]*Zetaz[l][n + 1]*(D1z[l][n + 1] - D3z[l][n + 1]);
 | 
	
		
			
				|  |  |          auto denomPsi = m1[l]*Psiz[l][n + 1]*(D1z[l][n + 1] - D3z[l][n + 1]);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        auto T1 = aln_[l + 1][n]*Zetaz1[l][n + 1] - dnl_[l + 1][n]*Psiz1[l][n + 1];
 | 
	
		
			
				|  |  | -        auto T2 = bln_[l + 1][n]*Zetaz1[l][n + 1] - cnl_[l + 1][n]*Psiz1[l][n + 1];
 | 
	
		
			
				|  |  | +        auto T1 = aln_[l + 1][n]*Zetaz1[l][n + 1] - dln_[l + 1][n]*Psiz1[l][n + 1];
 | 
	
		
			
				|  |  | +        auto T2 = bln_[l + 1][n]*Zetaz1[l][n + 1] - cln_[l + 1][n]*Psiz1[l][n + 1];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        auto T3 = -D1z1[l][n + 1]*dnl_[l + 1][n]*Psiz1[l][n + 1] + D3z1[l][n + 1]*aln_[l + 1][n]*Zetaz1[l][n + 1];
 | 
	
		
			
				|  |  | -        auto T4 = -D1z1[l][n + 1]*cnl_[l + 1][n]*Psiz1[l][n + 1] + D3z1[l][n + 1]*bln_[l + 1][n]*Zetaz1[l][n + 1];
 | 
	
		
			
				|  |  | +        auto T3 = -D1z1[l][n + 1]*dln_[l + 1][n]*Psiz1[l][n + 1] + D3z1[l][n + 1]*aln_[l + 1][n]*Zetaz1[l][n + 1];
 | 
	
		
			
				|  |  | +        auto T4 = -D1z1[l][n + 1]*cln_[l + 1][n]*Psiz1[l][n + 1] + D3z1[l][n + 1]*bln_[l + 1][n]*Zetaz1[l][n + 1];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // anl
 | 
	
		
			
				|  |  |          aln_[l][n] = (D1z[l][n + 1]*m1[l]*T1 - m[l]*T3)/denomZeta;
 | 
	
		
			
				|  |  |          // bnl
 | 
	
		
			
				|  |  |          bln_[l][n] = (D1z[l][n + 1]*m[l]*T2 - m1[l]*T4)/denomZeta;
 | 
	
		
			
				|  |  |          // cnl
 | 
	
		
			
				|  |  | -        cnl_[l][n] = (D3z[l][n + 1]*m[l]*T2 - m1[l]*T4)/denomPsi;
 | 
	
		
			
				|  |  | +        cln_[l][n] = (D3z[l][n + 1]*m[l]*T2 - m1[l]*T4)/denomPsi;
 | 
	
		
			
				|  |  |          // dnl
 | 
	
		
			
				|  |  | -        dnl_[l][n] = (D3z[l][n + 1]*m1[l]*T1 - m[l]*T3)/denomPsi;
 | 
	
		
			
				|  |  | +        dln_[l][n] = (D3z[l][n + 1]*m1[l]*T1 - m[l]*T3)/denomPsi;
 | 
	
		
			
				|  |  |        }  // end of all n
 | 
	
		
			
				|  |  |      }  // end of all l
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1159,7 +1159,7 @@ namespace nmie {
 | 
	
		
			
				|  |  |        else throw std::invalid_argument("Unstable calculation of aln_[0][n]!");
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    areIntCoeffsCalc_ = true;
 | 
	
		
			
				|  |  | +    isIntCoeffsCalc_ = true;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    // ********************************************************************** //
 | 
	
		
			
				|  |  |    // ********************************************************************** //
 | 
	
	
		
			
				|  | @@ -1284,10 +1284,10 @@ namespace nmie {
 | 
	
		
			
				|  |  |        // Total field in the lth layer: eqs. (1) and (2) in Yang, Appl. Opt., 42 (2003) 1710-1720
 | 
	
		
			
				|  |  |        std::complex<double> En = ipow[n1 % 4]*(rn + rn + 1.0)/(rn*rn + rn);
 | 
	
		
			
				|  |  |        for (int i = 0; i < 3; i++) {
 | 
	
		
			
				|  |  | -        El[i] = El[i] + En*(cnl_[l][n]*M1o1n[i] - c_i*dnl_[l][n]*N1e1n[i]
 | 
	
		
			
				|  |  | +        El[i] = El[i] + En*(cln_[l][n]*M1o1n[i] - c_i*dln_[l][n]*N1e1n[i]
 | 
	
		
			
				|  |  |                        + c_i*aln_[l][n]*N3e1n[i] -     bln_[l][n]*M3o1n[i]);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        Hl[i] = Hl[i] + En*(-dnl_[l][n]*M1e1n[i] - c_i*cnl_[l][n]*N1o1n[i]
 | 
	
		
			
				|  |  | +        Hl[i] = Hl[i] + En*(-dln_[l][n]*M1e1n[i] - c_i*cln_[l][n]*N1o1n[i]
 | 
	
		
			
				|  |  |                        +  c_i*bln_[l][n]*N3o1n[i] +     aln_[l][n]*M3e1n[i]);
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      }  // end of for all n
 |