68 "Need to specify inputfld=file_%.fld ");
70 "Need to specify range=ns,dn,ne[include]");
72 std::string infilename =
m_config[
"inputfld"].as<
string>();
73 std::vector<int> range;
75 "Failed to interpret range string");
78 "range string should contain 3 values nstart, deltan, nend[include].");
80 vector<LibUtilities::FieldDefinitionsSharedPtr> FieldDef;
81 vector<vector<double>> FieldData;
83 for (
int i = range[0]; i <= range[2]; i += range[1])
85 boost::format filenameformat(infilename);
87 string inputfldname = filenameformat.str();
88 vector<LibUtilities::FieldDefinitionsSharedPtr> tempFieldDef;
89 vector<vector<double>> tempFieldData;
94 m_f->m_graph->GetExpansionInfo();
100 if (!expansions.size())
108 for (
auto &expIt : expansions)
110 ElementGIDs[i++] = expIt.second->m_geomPtr->GetGlobalID();
112 m_f->FieldIOForFile(inputfldname)
113 ->Import(inputfldname, tempFieldDef, tempFieldData,
118 m_f->FieldIOForFile(inputfldname)
119 ->Import(inputfldname, tempFieldDef, tempFieldData,
123 if (FieldDef.size() == 0)
125 FieldDef = tempFieldDef;
128 if (FieldData.size() < tempFieldData.size())
130 FieldData.resize(tempFieldData.size());
133 for (
size_t i = 0; i < tempFieldData.size(); ++i)
135 if (FieldData[i].size() < tempFieldData[i].size())
137 FieldData[i].resize(tempFieldData[i].size(), 0.);
139 Vmath::Vadd(FieldData[i].size(), tempFieldData[i].data(), 1,
140 FieldData[i].data(), 1, FieldData[i].data(), 1);
142 if (
m_f->m_comm->GetSpaceComm()->GetRank() == 0 && vm.count(
"verbose"))
144 std::cout <<
"File " << inputfldname <<
" processed." << std::endl;
155 int numHomoDir =
m_f->m_numHomogeneousDir;
156 int nfields = FieldDef[0]->m_fields.size();
157 m_f->m_exp.resize(nfields);
158 for (
int i = 1; i < nfields; ++i)
160 m_f->m_exp[i] =
m_f->AppendExpList(numHomoDir);
162 m_f->m_variables = FieldDef[0]->m_fields;
164 for (
int j = 0; j < nfields; ++j)
167 for (
int i = 0; i < FieldDef.size(); ++i)
169 m_f->m_exp[j]->ExtractDataToCoeffs(FieldDef[i], FieldData[i],
171 m_f->m_exp[j]->UpdateCoeffs());
174 m_f->m_exp[j]->UpdateCoeffs(), 1,
175 m_f->m_exp[j]->UpdateCoeffs(), 1);
176 m_f->m_exp[j]->BwdTrans(
m_f->m_exp[j]->GetCoeffs(),
177 m_f->m_exp[j]->UpdatePhys());
std::map< int, ExpansionInfoShPtr > ExpansionInfoMap
void Vadd(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Add vector z = x+y.
void Smul(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Scalar multiply y = alpha*x.