Skip to content

Commit 397707b

Browse files
authored
Merge pull request i-RIC#70 from kskinoue0612/issue-69
Closes i-RIC#69
2 parents fc13dbf + 91f6db5 commit 397707b

15 files changed

+449
-4
lines changed

iric_ftoc.c

+78
Original file line numberDiff line numberDiff line change
@@ -1229,6 +1229,45 @@ void IRICLIBDLL FMNAME(cg_iric_write_sol_particle_integer_mul_f, CG_IRIC_WRITE_S
12291229
*ier = cg_iRIC_Write_Sol_Particle_Integer_Mul(*fid, c_name, value);
12301230
}
12311231

1232+
void IRICLIBDLL FMNAME(cg_iric_write_sol_particlegroup_groupbegin_mul_f, CG_IRIC_WRITE_SOL_PARTICLEGROUP_GROUPBEGIN_MUL_F) (int *fid, STR_PSTR(name), int *ier STR_PLEN(name)) {
1233+
char c_name[CGIO_MAX_NAME_LENGTH+1];
1234+
string_2_C_string(STR_PTR(name), STR_LEN(name),
1235+
c_name, CGIO_MAX_NAME_LENGTH, ier);
1236+
if (*ier) return;
1237+
1238+
*ier = cg_iRIC_Write_Sol_ParticleGroup_GroupBegin_Mul(*fid, c_name);
1239+
}
1240+
1241+
void IRICLIBDLL FMNAME(cg_iric_write_sol_particlegroup_groupend_mul_f, CG_IRIC_WRITE_SOL_PARTICLEGROUP_GROUPEND_MUL_F) (int *fid, int *ier) {
1242+
*ier = cg_iRIC_Write_Sol_ParticleGroup_GroupEnd_Mul(*fid);
1243+
}
1244+
1245+
void IRICLIBDLL FMNAME(cg_iric_write_sol_particlegroup_pos2d_mul_f, CG_IRIC_WRITE_SOL_PARTICLEGROUP_POS2D_MUL_F) (int *fid, double *x, double *y, int *ier) {
1246+
*ier = cg_iRIC_Write_Sol_ParticleGroup_Pos2d_Mul(*fid, *x, *y);
1247+
}
1248+
1249+
void IRICLIBDLL FMNAME(cg_iric_write_sol_particlegroup_pos3d_mul_f, CG_IRIC_WRITE_SOL_PARTICLEGROUP_POS3D_MUL_F) (int *fid, double *x, double *y, double *z, int *ier) {
1250+
*ier = cg_iRIC_Write_Sol_ParticleGroup_Pos3d_Mul(*fid, *x, *y, *z);
1251+
}
1252+
1253+
void IRICLIBDLL FMNAME(cg_iric_write_sol_particlegroup_integer_mul_f, CG_IRIC_WRITE_SOL_PARTICLEGROUP_INTEGER_MUL_F) (int *fid, STR_PSTR(name), int *value, int *ier STR_PLEN(name)) {
1254+
char c_name[CGIO_MAX_NAME_LENGTH+1];
1255+
string_2_C_string(STR_PTR(name), STR_LEN(name),
1256+
c_name, CGIO_MAX_NAME_LENGTH, ier);
1257+
if (*ier) return;
1258+
1259+
*ier = cg_iRIC_Write_Sol_ParticleGroup_Integer_Mul(*fid, c_name, *value);
1260+
}
1261+
1262+
void IRICLIBDLL FMNAME(cg_iric_write_sol_particlegroup_real_mul_f, CG_IRIC_WRITE_SOL_PARTICLEGROUP_REAL_MUL_F) (int *fid, STR_PSTR(name), double *value, int *ier STR_PLEN(name)) {
1263+
char c_name[CGIO_MAX_NAME_LENGTH+1];
1264+
string_2_C_string(STR_PTR(name), STR_LEN(name),
1265+
c_name, CGIO_MAX_NAME_LENGTH, ier);
1266+
if (*ier) return;
1267+
1268+
*ier = cg_iRIC_Write_Sol_ParticleGroup_Real_Mul(*fid, c_name, *value);
1269+
}
1270+
12321271
void IRICLIBDLL FMNAME(cg_iric_write_sol_polydata_groupbegin_mul_f, CG_IRIC_WRITE_SOL_POLYDATA_GROUPBEGIN_MUL_F) (int *fid, STR_PSTR(name), int *ier STR_PLEN(name)) {
12331272
char c_name[CGIO_MAX_NAME_LENGTH+1];
12341273
string_2_C_string(STR_PTR(name), STR_LEN(name),
@@ -2489,6 +2528,45 @@ void IRICLIBDLL FMNAME(cg_iric_write_sol_particle_integer_f, CG_IRIC_WRITE_SOL_P
24892528
*ier = cg_iRIC_Write_Sol_Particle_Integer(c_name, value);
24902529
}
24912530

2531+
void IRICLIBDLL FMNAME(cg_iric_write_sol_particlegroup_groupbegin_f, CG_IRIC_WRITE_SOL_PARTICLEGROUP_GROUPBEGIN_F) (STR_PSTR(name), int *ier STR_PLEN(name)) {
2532+
char c_name[CGIO_MAX_NAME_LENGTH+1];
2533+
string_2_C_string(STR_PTR(name), STR_LEN(name),
2534+
c_name, CGIO_MAX_NAME_LENGTH, ier);
2535+
if (*ier) return;
2536+
2537+
*ier = cg_iRIC_Write_Sol_ParticleGroup_GroupBegin(c_name);
2538+
}
2539+
2540+
void IRICLIBDLL FMNAME(cg_iric_write_sol_particlegroup_groupend_f, CG_IRIC_WRITE_SOL_PARTICLEGROUP_GROUPEND_F) (int *ier) {
2541+
*ier = cg_iRIC_Write_Sol_ParticleGroup_GroupEnd();
2542+
}
2543+
2544+
void IRICLIBDLL FMNAME(cg_iric_write_sol_particlegroup_pos2d_f, CG_IRIC_WRITE_SOL_PARTICLEGROUP_POS2D_F) (double *x, double *y, int *ier) {
2545+
*ier = cg_iRIC_Write_Sol_ParticleGroup_Pos2d(*x, *y);
2546+
}
2547+
2548+
void IRICLIBDLL FMNAME(cg_iric_write_sol_particlegroup_pos3d_f, CG_IRIC_WRITE_SOL_PARTICLEGROUP_POS3D_F) (double *x, double *y, double *z, int *ier) {
2549+
*ier = cg_iRIC_Write_Sol_ParticleGroup_Pos3d(*x, *y, *z);
2550+
}
2551+
2552+
void IRICLIBDLL FMNAME(cg_iric_write_sol_particlegroup_integer_f, CG_IRIC_WRITE_SOL_PARTICLEGROUP_INTEGER_F) (STR_PSTR(name), int *value, int *ier STR_PLEN(name)) {
2553+
char c_name[CGIO_MAX_NAME_LENGTH+1];
2554+
string_2_C_string(STR_PTR(name), STR_LEN(name),
2555+
c_name, CGIO_MAX_NAME_LENGTH, ier);
2556+
if (*ier) return;
2557+
2558+
*ier = cg_iRIC_Write_Sol_ParticleGroup_Integer(c_name, *value);
2559+
}
2560+
2561+
void IRICLIBDLL FMNAME(cg_iric_write_sol_particlegroup_real_f, CG_IRIC_WRITE_SOL_PARTICLEGROUP_REAL_F) (STR_PSTR(name), double *value, int *ier STR_PLEN(name)) {
2562+
char c_name[CGIO_MAX_NAME_LENGTH+1];
2563+
string_2_C_string(STR_PTR(name), STR_LEN(name),
2564+
c_name, CGIO_MAX_NAME_LENGTH, ier);
2565+
if (*ier) return;
2566+
2567+
*ier = cg_iRIC_Write_Sol_ParticleGroup_Real(c_name, *value);
2568+
}
2569+
24922570
void IRICLIBDLL FMNAME(cg_iric_write_sol_polydata_groupbegin_f, CG_IRIC_WRITE_SOL_POLYDATA_GROUPBEGIN_F) (STR_PSTR(name), int *ier STR_PLEN(name)) {
24932571
char c_name[CGIO_MAX_NAME_LENGTH+1];
24942572
string_2_C_string(STR_PTR(name), STR_LEN(name),

iriclib.cpp

+36
Original file line numberDiff line numberDiff line change
@@ -1050,6 +1050,42 @@ int cg_iRIC_Write_Sol_Particle_Integer_Mul(int fid, const char* name, int* value
10501050
return f->Sol_Particle_Write_Integer(name, value);
10511051
}
10521052

1053+
int cg_iRIC_Write_Sol_ParticleGroup_GroupBegin_Mul(int fid, const char* name)
1054+
{
1055+
GET_F(fid);
1056+
return f->Sol_ParticleGroup_Write_GroupBegin(name);
1057+
}
1058+
1059+
int cg_iRIC_Write_Sol_ParticleGroup_GroupEnd_Mul(int fid)
1060+
{
1061+
GET_F(fid);
1062+
return f->Sol_ParticleGroup_Write_GroupEnd();
1063+
}
1064+
1065+
int cg_iRIC_Write_Sol_ParticleGroup_Pos2d_Mul(int fid, double x, double y)
1066+
{
1067+
GET_F(fid);
1068+
return f->Sol_ParticleGroup_Write_Pos2d(x, y);
1069+
}
1070+
1071+
int cg_iRIC_Write_Sol_ParticleGroup_Pos3d_Mul(int fid, double x, double y, double z)
1072+
{
1073+
GET_F(fid);
1074+
return f->Sol_ParticleGroup_Write_Pos3d(x, y, z);
1075+
}
1076+
1077+
int cg_iRIC_Write_Sol_ParticleGroup_Integer_Mul(int fid, const char* name, int value)
1078+
{
1079+
GET_F(fid);
1080+
return f->Sol_ParticleGroup_Write_Integer(name, value);
1081+
}
1082+
1083+
int cg_iRIC_Write_Sol_ParticleGroup_Real_Mul(int fid, const char* name, double value)
1084+
{
1085+
GET_F(fid);
1086+
return f->Sol_ParticleGroup_Write_Real(name, value);
1087+
}
1088+
10531089
int cg_iRIC_Write_Sol_PolyData_GroupBegin_Mul(int fid, const char* name)
10541090
{
10551091
GET_F(fid);

iriclib.h

+23
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,17 @@ int IRICLIBDLL cg_iRIC_Write_Sol_Particle_Pos3d_Mul(int fid, cgsize_t count, dou
350350
int IRICLIBDLL cg_iRIC_Write_Sol_Particle_Real_Mul(int fid, const char* name, double* value);
351351
int IRICLIBDLL cg_iRIC_Write_Sol_Particle_Integer_Mul(int fid, const char* name, int* value);
352352

353+
/**********************************************/
354+
/* Writing Particle Groups */
355+
/**********************************************/
356+
357+
int IRICLIBDLL cg_iRIC_Write_Sol_ParticleGroup_GroupBegin_Mul(int fid, const char* name);
358+
int IRICLIBDLL cg_iRIC_Write_Sol_ParticleGroup_GroupEnd_Mul(int fid);
359+
int IRICLIBDLL cg_iRIC_Write_Sol_ParticleGroup_Pos2d_Mul(int fid, double x, double y);
360+
int IRICLIBDLL cg_iRIC_Write_Sol_ParticleGroup_Pos3d_Mul(int fid, double x, double y, double z);
361+
int IRICLIBDLL cg_iRIC_Write_Sol_ParticleGroup_Integer_Mul(int fid, const char* name, int value);
362+
int IRICLIBDLL cg_iRIC_Write_Sol_ParticleGroup_Real_Mul(int fid, const char* name, double value);
363+
353364
/**********************************************/
354365
/* Writing Polydata */
355366
/**********************************************/
@@ -680,6 +691,18 @@ int IRICLIBDLL cg_iRIC_Write_Sol_Particle_Real(const char* name, double* value);
680691

681692
int IRICLIBDLL cg_iRIC_Write_Sol_Particle_Integer(const char* name, int* value);
682693

694+
int IRICLIBDLL cg_iRIC_Write_Sol_ParticleGroup_GroupBegin(const char* name);
695+
696+
int IRICLIBDLL cg_iRIC_Write_Sol_ParticleGroup_GroupEnd();
697+
698+
int IRICLIBDLL cg_iRIC_Write_Sol_ParticleGroup_Pos2d(double x, double y);
699+
700+
int IRICLIBDLL cg_iRIC_Write_Sol_ParticleGroup_Pos3d(double x, double y, double z);
701+
702+
int IRICLIBDLL cg_iRIC_Write_Sol_ParticleGroup_Integer(const char* name, int value);
703+
704+
int IRICLIBDLL cg_iRIC_Write_Sol_ParticleGroup_Real(const char* name, double value);
705+
683706
int IRICLIBDLL cg_iRIC_Write_Sol_PolyData_GroupBegin(const char* name);
684707

685708
int IRICLIBDLL cg_iRIC_Write_Sol_PolyData_GroupEnd();

iriclib_cgnsfile.h

+11
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,17 @@ class CgnsFile
197197
int Sol_Particle_Write_Real(const char* name, double* value);
198198
int Sol_Particle_Write_Integer(const char* name, int* value);
199199

200+
// ----------------------------
201+
// Solution Particle Group I/O
202+
// ----------------------------
203+
204+
int Sol_ParticleGroup_Write_GroupBegin(const char* name);
205+
int Sol_ParticleGroup_Write_GroupEnd();
206+
int Sol_ParticleGroup_Write_Pos2d(double x, double y);
207+
int Sol_ParticleGroup_Write_Pos3d(double x, double y, double z);
208+
int Sol_ParticleGroup_Write_Integer(const char* name, int value);
209+
int Sol_ParticleGroup_Write_Real(const char* name, double value);
210+
200211
// ----------------------
201212
// Solution Polydata I/O
202213
// ----------------------

iriclib_cgnsfile_base.cpp

+18
Original file line numberDiff line numberDiff line change
@@ -709,6 +709,11 @@ void CgnsFile::Impl::getParticleSolName(int num, char* name)
709709
sprintf(name, "ParticleSolution%d", num);
710710
}
711711

712+
void CgnsFile::Impl::getParticleGroupSolName(int num, char* name)
713+
{
714+
sprintf(name, "ParticleGroupSolution%d", num);
715+
}
716+
712717
void CgnsFile::Impl::getPolydataSolName(int num, char* name)
713718
{
714719
sprintf(name, "PolydataSolution%d", num);
@@ -758,6 +763,9 @@ int CgnsFile::Impl::addSolutionNode(int fid, int bid, int zid, int sid, std::vec
758763
ier = writeFlowJFaceSolutionPointers(fid, bid, zid, *jfacesols);
759764
RETURN_IF_ERR;
760765

766+
ier = addParticleGroupSolutionNode(fid, bid, zid, sid);
767+
RETURN_IF_ERR;
768+
761769
ier = addPolydataSolutionNode(fid, bid, zid, sid);
762770
RETURN_IF_ERR;
763771

@@ -789,6 +797,16 @@ int CgnsFile::Impl::addParticleSolutionNode(int fid, int bid, int zid, int sid)
789797
return cg_user_data_write(solname);
790798
}
791799

800+
int CgnsFile::Impl::addParticleGroupSolutionNode(int fid, int bid, int zid, int sid)
801+
{
802+
char solname[NAME_MAXLENGTH];
803+
getParticleGroupSolName(sid, solname);
804+
805+
int ier = cg_goto(fid, bid, "Zone_t", zid, NULL);
806+
RETURN_IF_ERR;
807+
return cg_user_data_write(solname);
808+
}
809+
792810
int CgnsFile::Impl::addPolydataSolutionNode(int fid, int bid, int zid, int sid)
793811
{
794812
char solname[NAME_MAXLENGTH];

iriclib_cgnsfile_sol.cpp

+30
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,36 @@ int CgnsFile::Sol_Particle_Write_Integer(const char* name, int* value)
325325
return impl->m_solutionWriter->Sol_Particle_Write_Integer(name, value);
326326
}
327327

328+
int CgnsFile::Sol_ParticleGroup_Write_GroupBegin(const char* name)
329+
{
330+
return impl->m_solutionWriter->Sol_ParticleGroup_Write_GroupBegin(name);
331+
}
332+
333+
int CgnsFile::Sol_ParticleGroup_Write_GroupEnd()
334+
{
335+
return impl->m_solutionWriter->Sol_ParticleGroup_Write_GroupEnd();
336+
}
337+
338+
int CgnsFile::Sol_ParticleGroup_Write_Pos2d(double x, double y)
339+
{
340+
return impl->m_solutionWriter->Sol_ParticleGroup_Write_Pos2d(x, y);
341+
}
342+
343+
int CgnsFile::Sol_ParticleGroup_Write_Pos3d(double x, double y, double z)
344+
{
345+
return impl->m_solutionWriter->Sol_ParticleGroup_Write_Pos3d(x, y, z);
346+
}
347+
348+
int CgnsFile::Sol_ParticleGroup_Write_Integer(const char* name, int value)
349+
{
350+
return impl->m_solutionWriter->Sol_ParticleGroup_Write_Integer(name, value);
351+
}
352+
353+
int CgnsFile::Sol_ParticleGroup_Write_Real(const char* name, double value)
354+
{
355+
return impl->m_solutionWriter->Sol_ParticleGroup_Write_Real(name, value);
356+
}
357+
328358
int CgnsFile::Sol_PolyData_Write_GroupBegin(const char* name)
329359
{
330360
return impl->m_solutionWriter->Sol_PolyData_Write_GroupBegin(name);

iriclib_single.c

+30
Original file line numberDiff line numberDiff line change
@@ -637,6 +637,36 @@ int cg_iRIC_Write_Sol_Particle_Integer(const char* name, int* value)
637637
return cg_iRIC_Write_Sol_Particle_Integer_Mul(lastfileid, name, value);
638638
}
639639

640+
int cg_iRIC_Write_Sol_ParticleGroup_GroupBegin(const char* name)
641+
{
642+
return cg_iRIC_Write_Sol_ParticleGroup_GroupBegin_Mul(lastfileid, name);
643+
}
644+
645+
int cg_iRIC_Write_Sol_ParticleGroup_GroupEnd()
646+
{
647+
return cg_iRIC_Write_Sol_ParticleGroup_GroupEnd_Mul(lastfileid);
648+
}
649+
650+
int cg_iRIC_Write_Sol_ParticleGroup_Pos2d(double x, double y)
651+
{
652+
return cg_iRIC_Write_Sol_ParticleGroup_Pos2d_Mul(lastfileid, x, y);
653+
}
654+
655+
int cg_iRIC_Write_Sol_ParticleGroup_Pos3d(double x, double y, double z)
656+
{
657+
return cg_iRIC_Write_Sol_ParticleGroup_Pos3d_Mul(lastfileid, x, y, z);
658+
}
659+
660+
int cg_iRIC_Write_Sol_ParticleGroup_Integer(const char* name, int value)
661+
{
662+
return cg_iRIC_Write_Sol_ParticleGroup_Integer_Mul(lastfileid, name, value);
663+
}
664+
665+
int cg_iRIC_Write_Sol_ParticleGroup_Real(const char* name, double value)
666+
{
667+
return cg_iRIC_Write_Sol_ParticleGroup_Real_Mul(lastfileid, name, value);
668+
}
669+
640670
int cg_iRIC_Write_Sol_PolyData_GroupBegin(const char* name)
641671
{
642672
return cg_iRIC_Write_Sol_PolyData_GroupBegin_Mul(lastfileid, name);

private/iriclib_cgnsfile_impl.h

+5-2
Original file line numberDiff line numberDiff line change
@@ -98,19 +98,23 @@ class CgnsFile::Impl
9898

9999
static void getSolGridCoordName(int num, char* name);
100100
static void getParticleSolName(int num, char* name);
101+
static void getParticleGroupSolName(int num, char* name);
101102
static void getPolydataSolName(int num, char* name);
102103

103104
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);
104105
static int addSolutionGridCoordNode(int fid, int bid, int zid, int sid, std::vector<std::string>* coords);
105106
static int addParticleSolutionNode(int fid, int bid, int zid, int sid);
107+
static int addParticleGroupSolutionNode(int fid, int bid, int zid, int sid);
106108
static int addPolydataSolutionNode(int fid, int bid, int zid, int sid);
107109

108110
static int writePointers(int fid, int bid, int zid, const char* name, const std::vector<std::string>& strs);
109111
static int writeFlowSolutionPointers(int fid, int bid, int zid, const std::vector<std::string>& sols);
110112
static int writeFlowCellSolutionPointers(int fid, int bid, int zid, const std::vector<std::string>& sols);
111113
static int writeFlowIFaceSolutionPointers(int fid, int bid, int zid, const std::vector<std::string>& sols);
112114
static int writeFlowJFaceSolutionPointers(int fid, int bid, int zid, const std::vector<std::string>& sols);
113-
115+
static int writeParticleSolutionPointers(int fid, int bid, int zid, const std::vector<std::string>& sols);
116+
static int writeParticleGroupSolutionPointers(int fid, int bid, int zid, const std::vector<std::string>& sols);
117+
static int writePolydataSolutionPointers(int fid, int bid, int zid, const std::vector<std::string>& sols);
114118
static int writeGridCoordinatesPointers(int fid, int bid, int zid, const std::vector<std::string>& coords);
115119

116120
int solIndex(CGNS_ENUMT(GridLocation_t) location, int step);
@@ -138,7 +142,6 @@ class CgnsFile::Impl
138142
std::vector<std::string> m_cellSolPointers;
139143
std::vector<std::string> m_ifaceSolPointers;
140144
std::vector<std::string> m_jfaceSolPointers;
141-
std::vector<std::string> m_solParticlePointers;
142145

143146
std::vector<BaseIterativeT<int> > m_solBaseIterInts;
144147
std::vector<BaseIterativeT<double> > m_solBaseIterReals;

0 commit comments

Comments
 (0)