← Back to team overview

yade-dev team mailing list archive

[Branch ~yade-dev/yade/trunk] Rev 1757: 1. get snow code to run, albeit still buggy

 

------------------------------------------------------------
revno: 1757
committer: Janek Kozicki <cosurgi@xxxxxxxxxx>
branch nick: trunk
timestamp: Mon 2009-09-14 14:46:08 +0200
message:
  1. get snow code to run, albeit still buggy
  2. why dynamic_casts stopped working everywhere, that's a mystery to me
  3. interactions isNew doesn't exist anymore, snow code needs update for this
modified:
  pkg/snow/DataClass/BshSnowGrain.hpp
  pkg/snow/Engine/Ef2_BssSnowGrain_BssSnowGrain_makeSpheresContactGeometry.cpp
  pkg/snow/Engine/Ef2_InteractingBox_BssSnowGrain_makeIstSnowLayersContact.cpp
  pkg/snow/Engine/Ef2_InteractingBox_BssSnowGrain_makeSpheresContactGeometry.cpp
  pkg/snow/PreProcessor/SnowVoxelsLoader.cpp
  pkg/snow/PreProcessor/SnowVoxelsLoader.hpp


--
lp:yade
https://code.launchpad.net/~yade-dev/yade/trunk

Your team Yade developers is subscribed to branch lp:yade.
To unsubscribe from this branch go to https://code.launchpad.net/~yade-dev/yade/trunk/+edit-subscription.
=== modified file 'pkg/snow/DataClass/BshSnowGrain.hpp'
--- pkg/snow/DataClass/BshSnowGrain.hpp	2009-08-03 10:02:11 +0000
+++ pkg/snow/DataClass/BshSnowGrain.hpp	2009-09-14 12:46:08 +0000
@@ -8,8 +8,8 @@
 #include<boost/serialization/vector.hpp>
 #include<boost/serialization/shared_ptr.hpp>
 #include<boost/tuple/tuple.hpp>
-#include <boost/thread.hpp>
-
+#include<boost/thread.hpp>
+#include<boost/serialization/export.hpp> 
 
 typedef std::vector< std::vector<std::vector<unsigned char> > > T_DATA;
 
@@ -126,3 +126,5 @@
 
 REGISTER_SERIALIZABLE(BshSnowGrain);
 
+BOOST_CLASS_EXPORT(BshSnowGrain) 
+

=== modified file 'pkg/snow/Engine/Ef2_BssSnowGrain_BssSnowGrain_makeSpheresContactGeometry.cpp'
--- pkg/snow/Engine/Ef2_BssSnowGrain_BssSnowGrain_makeSpheresContactGeometry.cpp	2009-08-03 10:02:11 +0000
+++ pkg/snow/Engine/Ef2_BssSnowGrain_BssSnowGrain_makeSpheresContactGeometry.cpp	2009-09-14 12:46:08 +0000
@@ -23,7 +23,20 @@
 //	std::cerr << "------------------- " << __FILE__ << "\n";
 //	return result;
 
-	BssSnowGrain* s1=dynamic_cast<BssSnowGrain*>(cm1.get()), *s2=dynamic_cast<BssSnowGrain*>(cm2.get());
+	if(cm1->getClassName() != std::string("BssSnowGrain") || cm2->getClassName() != std::string("BssSnowGrain"))
+	{
+		std::cerr << cm1->getClassName() << " " << cm2->getClassName() << "\n";
+		std::cerr << "whooooooooops =99=\n";
+		return false;
+	}
+	BssSnowGrain* s1=static_cast<BssSnowGrain*>(cm1.get());
+	BssSnowGrain* s2=static_cast<BssSnowGrain*>(cm2.get());
+	if(s1==0 || s2==0)
+	{
+		std::cerr << cm1->getClassName() << " " << cm2->getClassName() << "\n";
+		std::cerr << "whooooooooops =9=\n";
+		return false;
+	}
 	Vector3r normal=se32.position-se31.position;
 	Real penetrationDepthSq=pow((s1->radius+s2->radius),2) - normal.SquaredLength();
 	if (penetrationDepthSq>0 || c->isReal() || assist)
@@ -77,11 +90,11 @@
 	{
 		shared_ptr<SpheresContactGeometry> scm;
 		if(c->interactionGeometry) scm=dynamic_pointer_cast<SpheresContactGeometry>(c->interactionGeometry);
-		else { std::cerr << "whooooooooops_2!" << __FILE__ << "\n"; return false; }
+		else { std::cerr << "whooooooooops =5= " << __FILE__ << "\n"; return false; }
 		scm->normal *= -1.0;
 		std::swap(scm->radius1,scm->radius2);
 	}
 	return result;
 }
 
-YADE_PLUGIN((Ef2_BssSnowGrain_BssSnowGrain_makeSpheresContactGeometry));
\ No newline at end of file
+YADE_PLUGIN((Ef2_BssSnowGrain_BssSnowGrain_makeSpheresContactGeometry));

=== modified file 'pkg/snow/Engine/Ef2_InteractingBox_BssSnowGrain_makeIstSnowLayersContact.cpp'
--- pkg/snow/Engine/Ef2_InteractingBox_BssSnowGrain_makeIstSnowLayersContact.cpp	2009-08-20 19:55:52 +0000
+++ pkg/snow/Engine/Ef2_InteractingBox_BssSnowGrain_makeIstSnowLayersContact.cpp	2009-09-14 12:46:08 +0000
@@ -59,10 +59,18 @@
 	//InteractingBox* m1=static_cast<InteractingBox*>(cm1.get()), *m2=static_cast<BssSnowGrain*>(cm2.get());
 	//std::cerr << "------------------- " << __FILE__ << "\n";
 
-				InteractingBox* m1=dynamic_cast<InteractingBox*>(cm1.get()); BssSnowGrain *m2=dynamic_cast<BssSnowGrain*>(cm2.get());
+	if(cm1->getClassName() != std::string("InteractingBox") || cm2->getClassName() != std::string("BssSnowGrain"))
+	{
+		std::cerr << cm1->getClassName() << " " << cm2->getClassName() << "\n";
+		std::cerr << "whooooooooops =66=\n";
+		return false;
+	}
+				InteractingBox* m1=static_cast<InteractingBox*>(cm1.get());
+				BssSnowGrain *m2=static_cast<BssSnowGrain*>(cm2.get());
 				if(m1==0 || m2==0)
 				{
-					std::cerr << "whooooooooops_2!" << __FILE__ << "\n"; 
+					std::cerr << cm1->getClassName() << " " << cm2->getClassName() << "\n";
+					std::cerr << "whooooooooops =6= " << __FILE__ << "\n"; 
 					return false;
 				}
 
@@ -227,6 +235,7 @@
 //FIXME//		bool old_n = c->isNew;
 //FIXME//		c->isNew=false;
 		//ggg.assist=true;
+///////////////??????		c->init();
 		bool res = ggg.go(cm1,cm2,se31,se32,c);
 //FIXME//		c->isNew=old_n;
 		return res;
@@ -264,10 +273,18 @@
 	//InteractingBox* m1=static_cast<InteractingBox*>(cm1.get()), *m2=static_cast<BssSnowGrain*>(cm2.get());
 ////	std::cerr << "----- reverse ----- " << __FILE__ << "\n";
 
-				InteractingBox* m2=dynamic_cast<InteractingBox*>(cm2.get()); BssSnowGrain *m1=dynamic_cast<BssSnowGrain*>(cm1.get());
+	if(cm1->getClassName() != std::string("BssSnowGrain") || cm2->getClassName() != std::string("InteractingBox"))
+	{
+		std::cerr << cm1->getClassName() << " " << cm2->getClassName() << "\n";
+		std::cerr << "whooooooooops =11=\n";
+		return false;
+	}
+				InteractingBox* m2=static_cast<InteractingBox*>(cm2.get());
+				BssSnowGrain *m1=static_cast<BssSnowGrain*>(cm1.get());
 				if(m1==0 || m2==0)
 				{
-					std::cerr << "whooooooooops_2!" << __FILE__ << "\n"; 
+					std::cerr << cm1->getClassName() << " " << cm2->getClassName() << "\n";
+					std::cerr << "\n whooooooooops =1= " << __FILE__ << "\n"; 
 					return false;
 				}
 

=== modified file 'pkg/snow/Engine/Ef2_InteractingBox_BssSnowGrain_makeSpheresContactGeometry.cpp'
--- pkg/snow/Engine/Ef2_InteractingBox_BssSnowGrain_makeSpheresContactGeometry.cpp	2009-08-03 10:02:11 +0000
+++ pkg/snow/Engine/Ef2_InteractingBox_BssSnowGrain_makeSpheresContactGeometry.cpp	2009-09-14 12:46:08 +0000
@@ -28,16 +28,27 @@
 	if(result)
 	{
 		//InteractingBox* s1=static_cast<InteractingBox*>(cm1.get()), *s2=static_cast<BssSnowGrain*>(cm2.get());
-				InteractingBox* s1=dynamic_cast<InteractingBox*>(cm1.get());BssSnowGrain *s2=dynamic_cast<BssSnowGrain*>(cm2.get());
+		if(cm1->getClassName() != std::string("InteractingBox") || cm2->getClassName() != std::string("BssSnowGrain"))
+		{
+			std::cerr << cm1->getClassName() << " " << cm2->getClassName() << "\n";
+			std::cerr << "whooooooooops =22=\n";
+			return false;
+		}
+				InteractingBox* s1=static_cast<InteractingBox*>(cm1.get());
+				BssSnowGrain *s2=static_cast<BssSnowGrain*>(cm2.get());
 				if(s1==0 || s2==0)
 				{
-					std::cerr << "whooooooooops_2!" << __FILE__ << "\n"; 
+					std::cerr << cm1->getClassName() << " " << cm2->getClassName() << "\n";
+					std::cerr << "whooooooooops =2= " << __FILE__ << "\n"; 
 					return false;
 				}
 			
 		shared_ptr<SpheresContactGeometry> scm;
 		if(c->interactionGeometry) scm=dynamic_pointer_cast<SpheresContactGeometry>(c->interactionGeometry);
-		else { std::cerr << "whooooooooops!" << __FILE__ << "\n"; }
+		else 
+		{ 
+			std::cerr << "whooooooooops =3= " << __FILE__ << "\n";
+		}
 
 //	std::cerr << __FILE__ << " " << scm->getClassName() << "\n";
 		
@@ -76,11 +87,11 @@
 	{
 		shared_ptr<SpheresContactGeometry> scm;
 		if(c->interactionGeometry) scm=dynamic_pointer_cast<SpheresContactGeometry>(c->interactionGeometry);
-		else { std::cerr << "whooooooooops_2!" << __FILE__ << "\n"; return false; }
+		else { std::cerr << "whooooooooops =4= " << __FILE__ << "\n"; return false; }
 		scm->normal *= -1.0;
 		std::swap(scm->radius1,scm->radius2);
 	}
 	return result;
 }
 
-YADE_PLUGIN((Ef2_InteractingBox_BssSnowGrain_makeSpheresContactGeometry));
\ No newline at end of file
+YADE_PLUGIN((Ef2_InteractingBox_BssSnowGrain_makeSpheresContactGeometry));

=== modified file 'pkg/snow/PreProcessor/SnowVoxelsLoader.cpp'
--- pkg/snow/PreProcessor/SnowVoxelsLoader.cpp	2009-08-05 07:32:18 +0000
+++ pkg/snow/PreProcessor/SnowVoxelsLoader.cpp	2009-09-14 12:46:08 +0000
@@ -87,7 +87,7 @@
 //	voxel_txt_dir = "";
 //	voxel_caxis_file = "";
 //	voxel_colors_file = "";
-	grain_binary_data_file = "grain_binary.bz2";
+	grain_binary_data_file = "grain_binary--NOT-USED-NOW.bz2";
 	
 	sphereYoungModulus	= 15000000.0;
 	spherePoissonRatio	= 0.5;
@@ -148,18 +148,18 @@
 
 bool SnowVoxelsLoader::load_voxels()
 {
-	if(grain_binary_data_file !="" && boost::filesystem::exists(grain_binary_data_file))
-	{
-		std::cerr << "no need to load voxels - grain binary file exists\n";
-		std::cerr << "loading " << grain_binary_data_file << " ...";
-			boost::iostreams::filtering_istream ifs;
-			ifs.push(boost::iostreams::bzip2_decompressor());
-			ifs.push(boost::iostreams::file_source(grain_binary_data_file));
-		//std::ifstream ifs(m_config.load_file());
-		boost::archive::binary_iarchive ia(ifs);
-		ia >> m_grains;
-		return true;
-	}
+//	if(grain_binary_data_file !="" && boost::filesystem::exists(grain_binary_data_file))
+//	{
+//		std::cerr << "no need to load voxels - grain binary file exists\n";
+//		std::cerr << "loading " << grain_binary_data_file << " ...";
+//			boost::iostreams::filtering_istream ifs;
+//			ifs.push(boost::iostreams::bzip2_decompressor());
+//			ifs.push(boost::iostreams::file_source(grain_binary_data_file));
+//		//std::ifstream ifs(m_config.load_file());
+//		boost::archive::binary_iarchive ia(ifs);
+//		ia >> m_grains;
+//		return true;
+//	}
 
 	if(voxel_binary_data_file != "" && boost::filesystem::exists(voxel_binary_data_file))
 	{
@@ -233,17 +233,17 @@
 		
 		std::cerr << "\n======= total skipped grains: " << ((int)(skip_total)) << "\n";
 
-		std::cerr << "saving "<< grain_binary_data_file << " ...";
-		boost::iostreams::filtering_ostream ofs;
-		ofs.push(boost::iostreams::bzip2_compressor());
-		ofs.push(boost::iostreams::file_sink(grain_binary_data_file));
-		boost::archive::binary_oarchive oa(ofs);
-#if BOOST_VERSION >= 103500
-		oa << m_grains;
-#else
-		const std::vector<boost::shared_ptr<BshSnowGrain> > tmp(m_grains);
-		oa << tmp;
-#endif
+//		std::cerr << "saving "<< grain_binary_data_file << " ...";
+//		boost::iostreams::filtering_ostream ofs;
+//		ofs.push(boost::iostreams::bzip2_compressor());
+//		ofs.push(boost::iostreams::file_sink(grain_binary_data_file));
+//		boost::archive::binary_oarchive oa(ofs);
+////#if BOOST_VERSION >= 103500
+//		oa << m_grains;
+//#else
+//		const std::vector<boost::shared_ptr<BshSnowGrain> > tmp(m_grains);
+//		oa << tmp;
+//#endif
 		std::cerr << " finished\n";
 	}
 	

=== modified file 'pkg/snow/PreProcessor/SnowVoxelsLoader.hpp'
--- pkg/snow/PreProcessor/SnowVoxelsLoader.hpp	2009-07-17 20:50:55 +0000
+++ pkg/snow/PreProcessor/SnowVoxelsLoader.hpp	2009-09-14 12:46:08 +0000
@@ -132,7 +132,7 @@
 		//	(voxel_txt_dir)
 		//	(voxel_caxis_file)
 		//	(voxel_colors_file)
-		(grain_binary_data_file)
+	//	(grain_binary_data_file)
 		(one_voxel_in_meters_is)
 		(layer_distance_voxels)
 		(angle_increment_radians)


Follow ups