[Bf-blender-cvs] [5f39d58] soc-2014-fluid: setup script passed directly; file still created fir debug

Roman Pogribnyi noreply at git.blender.org
Mon Aug 18 14:54:34 CEST 2014


Commit: 5f39d58e6da019eedb78f3f6f66d9d25ed2fbdc7
Author: Roman Pogribnyi
Date:   Mon Aug 18 09:25:54 2014 +0200
Branches: soc-2014-fluid
https://developer.blender.org/rB5f39d58e6da019eedb78f3f6f66d9d25ed2fbdc7

setup script passed directly; file still created fir debug

===================================================================

M	intern/smoke/intern/MANTA.cpp
M	intern/smoke/intern/MANTA.h
M	source/blender/blenkernel/intern/smoke.c
M	source/blender/python/manta_pp/pwrapper/pymain.cpp

===================================================================

diff --git a/intern/smoke/intern/MANTA.cpp b/intern/smoke/intern/MANTA.cpp
index ef4169e..fd5fef0 100644
--- a/intern/smoke/intern/MANTA.cpp
+++ b/intern/smoke/intern/MANTA.cpp
@@ -181,7 +181,7 @@ extern "C" int read_mantaflow_sim(struct SmokeDomainSettings *sds, char *name, b
 	return 0;
 }
 
-void indent_ss(stringstream& ss, int indent)
+void indent_ss(ostringstream& ss, int indent)
 {
 	/*two-spaces indent*/
 	if (indent < 0) return;
@@ -192,7 +192,7 @@ void indent_ss(stringstream& ss, int indent)
 	ss << indentation;
 }
 
-void manta_gen_noise(stringstream& ss, char* solver, int indent, char *noise, int seed, bool load, bool clamp, float clampNeg, float clampPos, float valScale, float valOffset, float timeAnim)
+void manta_gen_noise(ostringstream& ss, char* solver, int indent, char *noise, int seed, bool load, bool clamp, float clampNeg, float clampPos, float valScale, float valOffset, float timeAnim)
 {
 	if (ss == NULL)/*should never be here*/
 	{
@@ -209,7 +209,7 @@ void manta_gen_noise(stringstream& ss, char* solver, int indent, char *noise, in
 	ss << noise << ".timeAnim = " << timeAnim << " \n";
 }
 
-void manta_solve_pressure(stringstream& ss, char *flags, char *vel, char *pressure, bool useResNorms, int openBound, int solver_res,float cgMaxIterFac, float cgAccuracy)
+void manta_solve_pressure(ostringstream& ss, char *flags, char *vel, char *pressure, bool useResNorms, int openBound, int solver_res,float cgMaxIterFac, float cgAccuracy)
 {
 	/*open:0 ; vertical : 1; closed:2*/
 	ss << "  solvePressure(flags=" << flags << ", vel=" << vel << ", pressure=" << pressure << ", useResNorm=" << (useResNorms?"True":"False") << ", openBound='";	
@@ -230,7 +230,7 @@ void manta_solve_pressure(stringstream& ss, char *flags, char *vel, char *pressu
 	ss << ", cgMaxIterFac=" << cgMaxIterFac << ", cgAccuracy=" << cgAccuracy << ") \n";
 }
 
-void manta_advect_SemiLagr(stringstream& ss, int indent, char *flags, char *vel, char *grid, int order)
+void manta_advect_SemiLagr(ostringstream& ss, int indent, char *flags, char *vel, char *grid, int order)
 {
 	if((order <=1) || (flags == NULL) || (vel == NULL) || (grid == NULL)){return;}
 	indent_ss(ss, indent);
@@ -239,7 +239,7 @@ void manta_advect_SemiLagr(stringstream& ss, int indent, char *flags, char *vel,
 }
 
 /*create solver, handle 2D case*/
-void manta_create_solver(stringstream& ss, char *name, char *nick, char *grid_size_name, int x_res, int y_res, int z_res, int dim)
+void manta_create_solver(ostringstream& ss, char *name, char *nick, char *grid_size_name, int x_res, int y_res, int z_res, int dim)
 {
 	if ((dim != 2) && (dim != 3))
 	{ return; }
@@ -254,7 +254,7 @@ inline bool file_exists (const std::string& name) {
 }
 
 /*blender transforms obj coords to [-1,1]. This method transforms them back*/
-void add_mesh_transform_method(stringstream& ss)
+void add_mesh_transform_method(ostringstream& ss)
 {
 	ss << "def transform_back(obj, gs):\n" <<
 	"  obj.scale(gs/2)\n" <<
@@ -383,7 +383,7 @@ void generate_manta_sim_file(Scene *scene, SmokeModifierData *smd)
 		return;
 	ofstream manta_setup_file;
 	manta_setup_file.open("manta_scene.py", std::fstream::trunc);
-	stringstream ss; /*setup contents*/
+	ostringstream ss; /*setup contents*/
 	
 	/*header*/
 	ss << "from manta import * \n";
@@ -586,7 +586,7 @@ void generate_manta_sim_file(Scene *scene, SmokeModifierData *smd)
 	manta_setup_file.close();
 	vector<string> a;
 	a.push_back("manta_scene.py");
-	runMantaScript(a);
+	runMantaScript(ss.str(),a);
 //	run_manta_scene("manta_scene.py");
 //	manta_sim_running = false;
 //	for (int frame=0; frame< 20; frame++)
diff --git a/intern/smoke/intern/MANTA.h b/intern/smoke/intern/MANTA.h
index a70b449..22cda57 100644
--- a/intern/smoke/intern/MANTA.h
+++ b/intern/smoke/intern/MANTA.h
@@ -25,27 +25,27 @@ struct manta_arg_struct {
 
 static pthread_t manta_thread;
 
-void runMantaScript(vector<string>& args);//defined in manta_pp/pwrapper/pymain.cpp
+void runMantaScript(const string&, vector<string>& args);//defined in manta_pp/pwrapper/pymain.cpp
 
 extern "C" bool manta_check_grid_size(struct FLUID_3D *fluid, int dimX, int dimY, int dimZ);
 
 extern "C" int read_mantaflow_sim(struct SmokeDomainSettings *sds, char *name, bool read_wavelets);
 
-void indent_ss(stringstream& ss, int indent);
+void indent_ss(ostringstream& ss, int indent);
 
-void manta_gen_noise(stringstream& ss, char* solver, int indent, char *noise, int seed, bool load, bool clamp, float clampNeg, float clampPos, float valScale, float valOffset, float timeAnim);
+void manta_gen_noise(ostringstream& ss, char* solver, int indent, char *noise, int seed, bool load, bool clamp, float clampNeg, float clampPos, float valScale, float valOffset, float timeAnim);
 
-void manta_solve_pressure(stringstream& ss, char *flags, char *vel, char *pressure, bool useResNorms, int openBound, int solver_res,float cgMaxIterFac=1.0, float cgAccuracy = 0.01);
+void manta_solve_pressure(ostringstream& ss, char *flags, char *vel, char *pressure, bool useResNorms, int openBound, int solver_res,float cgMaxIterFac=1.0, float cgAccuracy = 0.01);
 
-void manta_advect_SemiLagr(stringstream& ss, int indent, char *flags, char *vel, char *grid, int order);
+void manta_advect_SemiLagr(ostringstream& ss, int indent, char *flags, char *vel, char *grid, int order);
 
 /*create solver, handle 2D case*/
-void manta_create_solver(stringstream& ss, char *name, char *nick, char *grid_size_name, int x_res, int y_res, int z_res, int dim);
+void manta_create_solver(ostringstream& ss, char *name, char *nick, char *grid_size_name, int x_res, int y_res, int z_res, int dim);
 
 inline bool file_exists (const std::string& name);
 
 /*blender transforms obj coords to [-1,1]. This method transforms them back*/
-void add_mesh_transform_method(stringstream& ss);
+void add_mesh_transform_method(ostringstream& ss);
 
 void manta_cache_path(char *filepath);
 
diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c
index d5275eb..85300e8 100644
--- a/source/blender/blenkernel/intern/smoke.c
+++ b/source/blender/blenkernel/intern/smoke.c
@@ -2798,7 +2798,7 @@ static void smokeModifier_process(SmokeModifierData *smd, Scene *scene, Object *
 
 		// simulate the actual smoke (c++ code in intern/smoke)
 		// DG: interesting commenting this line + deactivating loading of noise files
-		if(smd->domain->flags & MOD_SMOKE_USE_MANTA)	/*load manta sim data into fluid object*/
+		if(framenr != startframe && smd->domain->flags & MOD_SMOKE_USE_MANTA)	/*load manta sim data into fluid object*/
 		{
 			smoke_mantaflow_sim_step(scene,smd);
 			const char *density_name_format = "./den%04d.uni";
diff --git a/source/blender/python/manta_pp/pwrapper/pymain.cpp b/source/blender/python/manta_pp/pwrapper/pymain.cpp
index d08bd34..c324703 100644
--- a/source/blender/python/manta_pp/pwrapper/pymain.cpp
+++ b/source/blender/python/manta_pp/pwrapper/pymain.cpp
@@ -92,7 +92,7 @@ void export_force_fields(int size_x, int size_y, int size_z, float *f_x, float*f
 //	writeGridTxt("s.txt", &force_fields);
 }
 		   
-void runMantaScript(vector<string>& args) {
+void runMantaScript(const string& ss,vector<string>& args) {
 	string filename = args[0];
 	
 	// Initialize extension classes and wrappers
@@ -141,7 +141,10 @@ void runMantaScript(vector<string>& args) {
 	delete[] buf;    
 #else
 	// for linux, use this as it produces nicer error messages
-	PyRun_SimpleFileEx(fp, filename.c_str(), 0);    
+	string toExec = "";
+	
+	PyRun_SimpleString(ss.c_str());
+	//	PyRun_SimpleFileEx(fp, filename.c_str(), 0);    
 //	for (int frame=0; frame < 4; ++frame)
 //	{
 //		std::string frame_str = static_cast<ostringstream*>( &(ostringstream() << frame) )->str();
@@ -166,22 +169,22 @@ void runMantaScript(vector<string>& args) {
 	delete [] cargs;
 }
 
-int manta_main(int argc,char* argv[]) {
-	debMsg("Version: "<< buildInfoString() , 1);
-
-#ifdef GUI
-	guiMain(argc, argv);    
-#else
-	if (argc<=1) {
-		cerr << "Usage : Syntax is 'manta <config.py>'" << endl;  
-		return 1;
-	}
-
-	vector<string> args;
-	for (int i=1; i<argc; i++) args.push_back(argv[i]);
-	runMantaScript(args);
-#endif        		
-
-	return 0;
-}
+//int manta_main(int argc,char* argv[]) {
+//	debMsg("Version: "<< buildInfoString() , 1);
+//
+//#ifdef GUI
+//	guiMain(argc, argv);    
+//#else
+//	if (argc<=1) {
+//		cerr << "Usage : Syntax is 'manta <config.py>'" << endl;  
+//		return 1;
+//	}
+//
+//	vector<string> args;
+//	for (int i=1; i<argc; i++) args.push_back(argv[i]);
+//	runMantaScript(args);
+//#endif        		
+//
+//	return 0;
+//}
 #endif
\ No newline at end of file




More information about the Bf-blender-cvs mailing list