diff --git a/C++/nonLin/nonLinCF.cc b/C++/nonLin/nonLinCF.cc index 7b1e0e87c617d5175910e3c59ea0078088dfa853..471f662c2bb8d825bb7831c601c34746a0e9353a 100644 --- a/C++/nonLin/nonLinCF.cc +++ b/C++/nonLin/nonLinCF.cc @@ -472,8 +472,20 @@ void nonLinCF_harmonicBalance<T, DIM>::Update(const vector<shared_ptr<Coefficien val_in_c = 0; for(j = 0; j!= ptrInput_i.size(); ++j){ ptrInput_i[j]->Evaluate(this->mips[el][ip], fV_tmp); - - val_in_c += fV_tmp(0) * std::exp( 1i * omega_i[j] * ti[i]); + if(ptrInput_i.size() == omega_i.size()){ + // complex + val_in_c += fV_tmp(0) * std::exp( 1i * omega_i[j] * ti[i]); + } + else{ + if ( j % 2 == 0){ + // cosine + val_in_c += fV_tmp(0) * std::cos(omega_i[static_cast<unsigned int>(j/2)] * ti[i]); + } + else{ + // sine + val_in_c += fV_tmp(0) * std::sin(omega_i[static_cast<unsigned int>(j/2)] * ti[i]); + } + } } // TODO: let the user decide....