Skip to content

Commit f5f0373

Browse files
authored
Merge pull request i-RIC#77 from kskinoue0612/issue-76
Closes i-RIC#76
2 parents 456b35d + e69cb46 commit f5f0373

4 files changed

+25
-14
lines changed

iriclib_cgnsfile_base.cpp

+20-9
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,12 @@ int CgnsFile::Impl::initZoneId(bool clearResults)
9292
// zone found!
9393
m_zoneId = Z;
9494

95+
ZoneType_t zt;
96+
ier = cg_zone_type(m_fileId, m_baseId, Z, &zt);
97+
RETURN_IF_ERR;
98+
99+
m_hasFaceSols = (zt == Structured);
100+
95101
if (clearResults) {
96102
ier = clearResultData();
97103
} else {
@@ -739,7 +745,7 @@ void CgnsFile::Impl::getPolydataSolName(int num, char* name)
739745
sprintf(name, "PolydataSolution%d", num);
740746
}
741747

742-
int CgnsFile::Impl::addSolutionNode(int fid, int bid, int zid, int sid, std::vector<std::string>* sols, std::vector<std::string>* cellsols, std::vector<std::string>* ifacesols, std::vector<std::string>* jfacesols)
748+
int CgnsFile::Impl::addSolutionNode(int fid, int bid, int zid, int sid, std::vector<std::string>* sols, std::vector<std::string>* cellsols, std::vector<std::string>* ifacesols, std::vector<std::string>* jfacesols, bool hasFaceSols)
743749
{
744750
char solname[NAME_MAXLENGTH];
745751
getSolName(sid, solname);
@@ -763,25 +769,30 @@ int CgnsFile::Impl::addSolutionNode(int fid, int bid, int zid, int sid, std::vec
763769
RETURN_IF_ERR;
764770

765771
ier = cg_sol_write(fid, bid, zid, cellsolname, CellCenter, &S);
766-
RETURN_IF_ERR;
767772

768-
ier = cg_sol_write(fid, bid, zid, ifacesolname, IFaceCenter, &S);
769773
RETURN_IF_ERR;
770774

771-
ier = cg_sol_write(fid, bid, zid, jfacesolname, JFaceCenter, &S);
772-
RETURN_IF_ERR;
775+
if (hasFaceSols) {
776+
ier = cg_sol_write(fid, bid, zid, ifacesolname, IFaceCenter, &S);
777+
RETURN_IF_ERR;
778+
779+
ier = cg_sol_write(fid, bid, zid, jfacesolname, JFaceCenter, &S);
780+
RETURN_IF_ERR;
781+
}
773782

774783
ier = writeFlowSolutionPointers(fid, bid, zid, *sols);
775784
RETURN_IF_ERR;
776785

777786
ier = writeFlowCellSolutionPointers(fid, bid, zid, *cellsols);
778787
RETURN_IF_ERR;
779788

780-
ier = writeFlowIFaceSolutionPointers(fid, bid, zid, *ifacesols);
781-
RETURN_IF_ERR;
789+
if (hasFaceSols) {
790+
ier = writeFlowIFaceSolutionPointers(fid, bid, zid, *ifacesols);
791+
RETURN_IF_ERR;
782792

783-
ier = writeFlowJFaceSolutionPointers(fid, bid, zid, *jfacesols);
784-
RETURN_IF_ERR;
793+
ier = writeFlowJFaceSolutionPointers(fid, bid, zid, *jfacesols);
794+
RETURN_IF_ERR;
795+
}
785796

786797
ier = addParticleGroupSolutionNode(fid, bid, zid, sid);
787798
RETURN_IF_ERR;

private/iriclib_cgnsfile_impl.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ class CgnsFile::Impl
102102
static void getParticleGroupSolName(int num, char* name);
103103
static void getPolydataSolName(int num, char* name);
104104

105-
static int addSolutionNode(int fid, int bid, int zid, int sid, std::vector<std::string>* sols, std::vector<std::string>* cellsols, std::vector<std::string>* ifacesols, std::vector<std::string>* jfacesols);
105+
static int addSolutionNode(int fid, int bid, int zid, int sid, std::vector<std::string>* sols, std::vector<std::string>* cellsols, std::vector<std::string>* ifacesols, std::vector<std::string>* jfacesols, bool hasFaceSols);
106106
static int addSolutionGridCoordNode(int fid, int bid, int zid, int sid, std::vector<std::string>* coords);
107107
static int addParticleSolutionNode(int fid, int bid, int zid, int sid);
108108
static int addParticleGroupSolutionNode(int fid, int bid, int zid, int sid);

private/iriclib_cgnsfile_solutionwriterdividesolutions.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ int CgnsFile::SolutionWriterDivideSolutions::Sol_Write_Time(double time)
155155
std::vector<std::string> cellsols;
156156
std::vector<std::string> ifacesols;
157157
std::vector<std::string> jfacesols;
158-
ier = Impl::addSolutionNode(m_fileId, m_baseId, m_zoneId, 1, &sols, &cellsols, &ifacesols, &jfacesols);
158+
ier = Impl::addSolutionNode(m_fileId, m_baseId, m_zoneId, 1, &sols, &cellsols, &ifacesols, &jfacesols, i->m_hasFaceSols);
159159
RETURN_IF_ERR;
160160

161161
// Vertex
@@ -234,7 +234,7 @@ int CgnsFile::SolutionWriterDivideSolutions::Sol_Write_Iteration(int index)
234234
std::vector<std::string> cellsols;
235235
std::vector<std::string> ifacesols;
236236
std::vector<std::string> jfacesols;
237-
ier = Impl::addSolutionNode(m_fileId, m_baseId, m_zoneId, 1, &sols, &cellsols, &ifacesols, &jfacesols);
237+
ier = Impl::addSolutionNode(m_fileId, m_baseId, m_zoneId, 1, &sols, &cellsols, &ifacesols, &jfacesols, i->m_hasFaceSols);
238238
RETURN_IF_ERR;
239239

240240
// Vertex

private/iriclib_cgnsfile_solutionwriterstandard.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ int CgnsFile::SolutionWriterStandard::Sol_Write_Time(double time)
1717
int ier = stdSolWriteTime(time, i);
1818
RETURN_IF_ERR;
1919

20-
return Impl::addSolutionNode(i->m_fileId, i->m_baseId, i->m_zoneId, i->m_solId, &(i->m_solPointers), &(i->m_cellSolPointers), &(i->m_ifaceSolPointers), &(i->m_jfaceSolPointers));
20+
return Impl::addSolutionNode(i->m_fileId, i->m_baseId, i->m_zoneId, i->m_solId, &(i->m_solPointers), &(i->m_cellSolPointers), &(i->m_ifaceSolPointers), &(i->m_jfaceSolPointers), i->m_hasFaceSols);
2121
}
2222

2323
int CgnsFile::SolutionWriterStandard::Sol_Write_Iteration(int index)
@@ -26,7 +26,7 @@ int CgnsFile::SolutionWriterStandard::Sol_Write_Iteration(int index)
2626
int ier = stdSolWriteIteration(index, i);
2727
RETURN_IF_ERR;
2828

29-
return Impl::addSolutionNode(i->m_fileId, i->m_baseId, i->m_zoneId, i->m_solId, &(i->m_solPointers), &(i->m_cellSolPointers), &(i->m_ifaceSolPointers), &(i->m_jfaceSolPointers));
29+
return Impl::addSolutionNode(i->m_fileId, i->m_baseId, i->m_zoneId, i->m_solId, &(i->m_solPointers), &(i->m_cellSolPointers), &(i->m_ifaceSolPointers), &(i->m_jfaceSolPointers), i->m_hasFaceSols);
3030
}
3131

3232
int CgnsFile::SolutionWriterStandard::Sol_Write_GridCoord2d(double *x, double *y)

0 commit comments

Comments
 (0)