yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #02015
[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