90 std::vector<std::string> files;
93 char *argv[] = {
const_cast<char *
>(
"FieldConvert"),
nullptr};
103 int numHomoDir =
m_f->m_numHomogeneousDir;
104 int coordim =
m_f->m_exp[0]->GetCoordim(0) + numHomoDir;
105 int npts =
m_f->m_exp[0]->GetTotPoints();
108 for (
int i = 0; i < coordim; ++i)
113 for (
int i = coordim; i < 3; ++i)
118 m_f->m_exp[0]->GetCoords(coords[0], coords[1], coords[2]);
120 rng->m_checkShape =
false;
124 rng->m_doZrange =
true;
129 rng->m_doYrange =
true;
134 rng->m_doXrange =
true;
148 fromField->m_graph->GetExpansionInfo();
152 if (!expansions.size())
160 for (
auto &expIt : expansions)
162 ElementGIDs[i++] = expIt.second->m_geomPtr->GetGlobalID();
165 string fromfld =
m_config[
"fromfld"].as<
string>();
166 m_f->FieldIOForFile(fromfld)->Import(
167 fromfld, fromField->m_fielddef, fromField->m_data,
170 int fromNumHomoDir = fromField->m_fielddef[0]->m_numHomogeneousDir;
171 for (i = 0; i < fromField->m_fielddef.size(); ++i)
173 int d1 = fromField->m_fielddef[i]->m_basis.size();
175 if (d1 >= 0 && (fromField->m_fielddef[i]->m_basis[d1] ==
177 fromField->m_fielddef[i]->m_basis[d1] ==
180 fromField->m_fielddef[i]->m_homogeneousZIDs[0] += 2;
181 fromField->m_fielddef[i]->m_numModes[d1] = 4;
188 fromField->m_graph->SetExpansionInfo(fromField->m_fielddef);
190 int nfields = fromField->m_fielddef[0]->m_fields.size();
192 fromField->m_exp.resize(nfields);
193 fromField->m_exp[0] = fromField->SetUpFirstExpList(fromNumHomoDir,
true);
195 m_f->m_exp.resize(nfields);
198 for (i = 1; i < nfields; ++i)
200 m_f->m_exp[i] =
m_f->AppendExpList(numHomoDir);
201 fromField->m_exp[i] = fromField->AppendExpList(fromNumHomoDir);
206 if (
m_config[
"realmodetoimag"].as<string>().compare(
"NotSet"))
209 m_f->m_variables, sinmode);
211 for (
int j = 0; j < nfields; ++j)
213 for (i = 0; i < fromField->m_fielddef.size(); i++)
215 fromField->m_exp[j]->ExtractDataToCoeffs(
216 fromField->m_fielddef[i], fromField->m_data[i],
217 fromField->m_fielddef[0]->m_fields[j],
218 fromField->m_exp[j]->UpdateCoeffs());
220 if (fromNumHomoDir == 1)
222 fromField->m_exp[j]->SetWaveSpace(
true);
223 if (sinmode.count(j))
225 int Ncoeff = fromField->m_exp[j]->GetPlane(2)->GetNcoeffs();
227 Ncoeff, -1., fromField->m_exp[j]->GetPlane(2)->GetCoeffs(),
228 1, fromField->m_exp[j]->GetPlane(3)->UpdateCoeffs(), 1);
230 fromField->m_exp[j]->GetPlane(2)->UpdateCoeffs(),
234 fromField->m_exp[j]->BwdTrans(fromField->m_exp[j]->GetCoeffs(),
235 fromField->m_exp[j]->UpdatePhys());
238 int nq1 =
m_f->m_exp[0]->GetTotPoints();
246 if (
m_f->m_verbose &&
m_f->m_comm->TreatAsRankZero())
251 interp.Interpolate(fromField->m_exp,
m_f->m_exp, def_value, tolerance);
253 if (
m_f->m_verbose &&
m_f->m_comm->TreatAsRankZero())
258 for (
int i = 0; i < nfields; ++i)
260 for (
int j = 0; j < nq1; ++j)
262 if (
m_f->m_exp[i]->GetPhys()[j] > clamp_up)
264 m_f->m_exp[i]->UpdatePhys()[j] = clamp_up;
266 else if (
m_f->m_exp[i]->GetPhys()[j] < clamp_low)
268 m_f->m_exp[i]->UpdatePhys()[j] = clamp_low;
271 m_f->m_exp[i]->FwdTransLocalElmt(
m_f->m_exp[i]->GetPhys(),
272 m_f->m_exp[i]->UpdateCoeffs());
275 m_f->m_variables = fromField->m_fielddef[0]->m_fields;
static MeshGraphSharedPtr Read(const LibUtilities::SessionReaderSharedPtr pSession, LibUtilities::DomainRangeShPtr rng=LibUtilities::NullDomainRangeShPtr, bool fillGraph=true, SpatialDomains::MeshGraphSharedPtr partitionedGraph=nullptr)
std::map< int, ExpansionInfoShPtr > ExpansionInfoMap
void Smul(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Scalar multiply y = alpha*x.