Merge pull request #133 from wanqing0421/main
Add the conveyor belt model and tutorial
This commit is contained in:
commit
51d85a0b79
|
@ -23,7 +23,7 @@ else()
|
||||||
set(Kokkos_Source_DIR $ENV{HOME}/Kokkos/kokkos)
|
set(Kokkos_Source_DIR $ENV{HOME}/Kokkos/kokkos)
|
||||||
endif()
|
endif()
|
||||||
message(STATUS "Kokkos source directory is ${Kokkos_Source_DIR}")
|
message(STATUS "Kokkos source directory is ${Kokkos_Source_DIR}")
|
||||||
add_subdirectory(${Kokkos_Source_DIR} ${phasicFlow_BINARY_DIR}/kokkos)
|
add_subdirectory(${Kokkos_Source_DIR} ./kokkos)
|
||||||
Kokkos_cmake_settings()
|
Kokkos_cmake_settings()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -26,4 +26,6 @@ template class pFlow::geometryMotion<pFlow::rotatingAxisMotion>;
|
||||||
|
|
||||||
template class pFlow::geometryMotion<pFlow::stationaryWall>;
|
template class pFlow::geometryMotion<pFlow::stationaryWall>;
|
||||||
|
|
||||||
|
template class pFlow::geometryMotion<pFlow::conveyorBeltMotion>;
|
||||||
|
|
||||||
//template class pFlow::geometryMotion<pFlow::multiRotatingAxisMotion>;
|
//template class pFlow::geometryMotion<pFlow::multiRotatingAxisMotion>;
|
||||||
|
|
|
@ -24,6 +24,7 @@ Licence:
|
||||||
#include "geometryMotion.hpp"
|
#include "geometryMotion.hpp"
|
||||||
#include "stationaryWall.hpp"
|
#include "stationaryWall.hpp"
|
||||||
#include "rotatingAxisMotion.hpp"
|
#include "rotatingAxisMotion.hpp"
|
||||||
|
#include "conveyorBeltMotion.hpp"
|
||||||
//#include "multiRotatingAxisMotion.hpp"
|
//#include "multiRotatingAxisMotion.hpp"
|
||||||
#include "vibratingMotion.hpp"
|
#include "vibratingMotion.hpp"
|
||||||
|
|
||||||
|
@ -37,6 +38,8 @@ using rotationAxisMotionGeometry = geometryMotion<rotatingAxisMotion>;
|
||||||
|
|
||||||
using stationaryGeometry = geometryMotion<stationaryWall>;
|
using stationaryGeometry = geometryMotion<stationaryWall>;
|
||||||
|
|
||||||
|
using conveyorBeltMotionGeometry = geometryMotion<conveyorBeltMotion>;
|
||||||
|
|
||||||
//typedef geometryMotion<multiRotatingAxisMotion> multiRotationAxisMotionGeometry;
|
//typedef geometryMotion<multiRotatingAxisMotion> multiRotationAxisMotionGeometry;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -59,4 +59,10 @@ createInteraction(pFlow::cfModels::grainRolling<pFlow::cfModels::cGAbsoluteLinea
|
||||||
createInteraction(pFlow::cfModels::grainRolling<pFlow::cfModels::cGRelativeLinear<true>>, pFlow::vibratingMotionGeometry);
|
createInteraction(pFlow::cfModels::grainRolling<pFlow::cfModels::cGRelativeLinear<true>>, pFlow::vibratingMotionGeometry);
|
||||||
|
|
||||||
createInteraction(pFlow::cfModels::grainRolling<pFlow::cfModels::cGAbsoluteLinear<false>>, pFlow::vibratingMotionGeometry);
|
createInteraction(pFlow::cfModels::grainRolling<pFlow::cfModels::cGAbsoluteLinear<false>>, pFlow::vibratingMotionGeometry);
|
||||||
createInteraction(pFlow::cfModels::grainRolling<pFlow::cfModels::cGRelativeLinear<false>>, pFlow::vibratingMotionGeometry);
|
createInteraction(pFlow::cfModels::grainRolling<pFlow::cfModels::cGRelativeLinear<false>>, pFlow::vibratingMotionGeometry);
|
||||||
|
|
||||||
|
createInteraction(pFlow::cfModels::grainRolling<pFlow::cfModels::cGAbsoluteLinear<true>>, pFlow::conveyorBeltMotionGeometry);
|
||||||
|
createInteraction(pFlow::cfModels::grainRolling<pFlow::cfModels::cGRelativeLinear<true>>, pFlow::conveyorBeltMotionGeometry);
|
||||||
|
|
||||||
|
createInteraction(pFlow::cfModels::grainRolling<pFlow::cfModels::cGAbsoluteLinear<false>>, pFlow::conveyorBeltMotionGeometry);
|
||||||
|
createInteraction(pFlow::cfModels::grainRolling<pFlow::cfModels::cGRelativeLinear<false>>, pFlow::conveyorBeltMotionGeometry);
|
|
@ -53,6 +53,10 @@ createInteraction(pFlow::cfModels::nonLimitedLinearNormalRolling,pFlow::rotation
|
||||||
createInteraction(pFlow::cfModels::limitedLinearNormalRolling, pFlow::vibratingMotionGeometry);
|
createInteraction(pFlow::cfModels::limitedLinearNormalRolling, pFlow::vibratingMotionGeometry);
|
||||||
createInteraction(pFlow::cfModels::nonLimitedLinearNormalRolling,pFlow::vibratingMotionGeometry);
|
createInteraction(pFlow::cfModels::nonLimitedLinearNormalRolling,pFlow::vibratingMotionGeometry);
|
||||||
|
|
||||||
|
// conveyorBeltGeometry
|
||||||
|
createInteraction(pFlow::cfModels::limitedLinearNormalRolling, pFlow::conveyorBeltMotionGeometry);
|
||||||
|
createInteraction(pFlow::cfModels::nonLimitedLinearNormalRolling,pFlow::conveyorBeltMotionGeometry);
|
||||||
|
|
||||||
// multiRotationAxisMotionGeometry
|
// multiRotationAxisMotionGeometry
|
||||||
//createInteraction(pFlow::cfModels::limitedLinearNormalRolling, pFlow::multiRotationAxisMotionGeometry);
|
//createInteraction(pFlow::cfModels::limitedLinearNormalRolling, pFlow::multiRotationAxisMotionGeometry);
|
||||||
//createInteraction(pFlow::cfModels::nonLimitedLinearNormalRolling,pFlow::multiRotationAxisMotionGeometry);
|
//createInteraction(pFlow::cfModels::nonLimitedLinearNormalRolling,pFlow::multiRotationAxisMotionGeometry);
|
||||||
|
|
|
@ -53,6 +53,10 @@ createInteraction(pFlow::cfModels::nonLimitedNonLinearModNormalRolling,pFlow::ro
|
||||||
createInteraction(pFlow::cfModels::limitedNonLinearModNormalRolling, pFlow::vibratingMotionGeometry);
|
createInteraction(pFlow::cfModels::limitedNonLinearModNormalRolling, pFlow::vibratingMotionGeometry);
|
||||||
createInteraction(pFlow::cfModels::nonLimitedNonLinearModNormalRolling,pFlow::vibratingMotionGeometry);
|
createInteraction(pFlow::cfModels::nonLimitedNonLinearModNormalRolling,pFlow::vibratingMotionGeometry);
|
||||||
|
|
||||||
|
// conveyorBeltMotionGeometry
|
||||||
|
createInteraction(pFlow::cfModels::limitedNonLinearModNormalRolling, pFlow::conveyorBeltMotionGeometry);
|
||||||
|
createInteraction(pFlow::cfModels::nonLimitedNonLinearModNormalRolling,pFlow::conveyorBeltMotionGeometry);
|
||||||
|
|
||||||
// multiRotationAxisMotionGeometry
|
// multiRotationAxisMotionGeometry
|
||||||
//createInteraction(pFlow::cfModels::limitedNonLinearModNormalRolling, pFlow::multiRotationAxisMotionGeometry);
|
//createInteraction(pFlow::cfModels::limitedNonLinearModNormalRolling, pFlow::multiRotationAxisMotionGeometry);
|
||||||
//createInteraction(pFlow::cfModels::nonLimitedNonLinearModNormalRolling,pFlow::multiRotationAxisMotionGeometry);
|
//createInteraction(pFlow::cfModels::nonLimitedNonLinearModNormalRolling,pFlow::multiRotationAxisMotionGeometry);
|
||||||
|
|
|
@ -53,6 +53,10 @@ createInteraction(pFlow::cfModels::nonLimitedNonLinearNormalRolling,pFlow::rotat
|
||||||
createInteraction(pFlow::cfModels::limitedNonLinearNormalRolling, pFlow::vibratingMotionGeometry);
|
createInteraction(pFlow::cfModels::limitedNonLinearNormalRolling, pFlow::vibratingMotionGeometry);
|
||||||
createInteraction(pFlow::cfModels::nonLimitedNonLinearNormalRolling,pFlow::vibratingMotionGeometry);
|
createInteraction(pFlow::cfModels::nonLimitedNonLinearNormalRolling,pFlow::vibratingMotionGeometry);
|
||||||
|
|
||||||
|
// conveyorBeltMotionGeometry
|
||||||
|
createInteraction(pFlow::cfModels::limitedNonLinearNormalRolling, pFlow::conveyorBeltMotionGeometry);
|
||||||
|
createInteraction(pFlow::cfModels::nonLimitedNonLinearNormalRolling,pFlow::conveyorBeltMotionGeometry);
|
||||||
|
|
||||||
// multiRotationAxisMotionGeometry
|
// multiRotationAxisMotionGeometry
|
||||||
//createInteraction(pFlow::cfModels::limitedNonLinearNormalRolling, pFlow::multiRotationAxisMotionGeometry);
|
//createInteraction(pFlow::cfModels::limitedNonLinearNormalRolling, pFlow::multiRotationAxisMotionGeometry);
|
||||||
//createInteraction(pFlow::cfModels::nonLimitedNonLinearNormalRolling,pFlow::multiRotationAxisMotionGeometry);
|
//createInteraction(pFlow::cfModels::nonLimitedNonLinearNormalRolling,pFlow::multiRotationAxisMotionGeometry);
|
||||||
|
|
|
@ -11,6 +11,9 @@ vibratingMotion/vibratingMotion.cpp
|
||||||
stationaryWall/stationaryWall.cpp
|
stationaryWall/stationaryWall.cpp
|
||||||
entities/stationary/stationary.cpp
|
entities/stationary/stationary.cpp
|
||||||
|
|
||||||
|
conveyorBeltMotion/conveyorBeltMotion.cpp
|
||||||
|
entities/conveyorBelt/conveyorBelt.cpp
|
||||||
|
|
||||||
#entities/multiRotatingAxis/multiRotatingAxis.cpp
|
#entities/multiRotatingAxis/multiRotatingAxis.cpp
|
||||||
#multiRotatingAxisMotion/multiRotatingAxisMotion.cpp
|
#multiRotatingAxisMotion/multiRotatingAxisMotion.cpp
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,75 @@
|
||||||
|
/*------------------------------- phasicFlow ---------------------------------
|
||||||
|
O C enter of
|
||||||
|
O O E ngineering and
|
||||||
|
O O M ultiscale modeling of
|
||||||
|
OOOOOOO F luid flow
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Copyright (C): www.cemf.ir
|
||||||
|
email: hamid.r.norouzi AT gmail.com
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Licence:
|
||||||
|
This file is part of phasicFlow code. It is a free software for simulating
|
||||||
|
granular and multiphase flows. You can redistribute it and/or modify it under
|
||||||
|
the terms of GNU General Public License v3 or any other later versions.
|
||||||
|
|
||||||
|
phasicFlow is distributed to help others in their research in the field of
|
||||||
|
granular and multiphase flows, but WITHOUT ANY WARRANTY; without even the
|
||||||
|
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "conveyorBeltMotion.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
pFlow::conveyorBeltMotion::conveyorBeltMotion
|
||||||
|
(
|
||||||
|
const objectFile &objf,
|
||||||
|
repository *owner
|
||||||
|
)
|
||||||
|
:
|
||||||
|
fileDictionary(objf, owner)
|
||||||
|
{
|
||||||
|
|
||||||
|
if(!impl_readDictionary(*this) )
|
||||||
|
{
|
||||||
|
fatalErrorInFunction;
|
||||||
|
fatalExit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pFlow::conveyorBeltMotion::conveyorBeltMotion
|
||||||
|
(
|
||||||
|
const objectFile &objf,
|
||||||
|
const dictionary &dict,
|
||||||
|
repository *owner
|
||||||
|
)
|
||||||
|
:
|
||||||
|
fileDictionary(objf, dict, owner)
|
||||||
|
{
|
||||||
|
if(!impl_readDictionary(*this) )
|
||||||
|
{
|
||||||
|
fatalErrorInFunction;
|
||||||
|
fatalExit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool pFlow::conveyorBeltMotion::write
|
||||||
|
(
|
||||||
|
iOstream &os,
|
||||||
|
const IOPattern &iop
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
// a global dictionary
|
||||||
|
dictionary newDict(fileDictionary::dictionary::name(), true);
|
||||||
|
if( iop.thisProcWriteData() )
|
||||||
|
{
|
||||||
|
if( !this->impl_writeDictionary(newDict) ||
|
||||||
|
!newDict.write(os))
|
||||||
|
{
|
||||||
|
fatalErrorInFunction<<
|
||||||
|
" error in writing to dictionary "<< newDict.globalName()<<endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
|
@ -0,0 +1,104 @@
|
||||||
|
/*------------------------------- phasicFlow ---------------------------------
|
||||||
|
O C enter of
|
||||||
|
O O E ngineering and
|
||||||
|
O O M ultiscale modeling of
|
||||||
|
OOOOOOO F luid flow
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Copyright (C): www.cemf.ir
|
||||||
|
email: hamid.r.norouzi AT gmail.com
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Licence:
|
||||||
|
This file is part of phasicFlow code. It is a free software for simulating
|
||||||
|
granular and multiphase flows. You can redistribute it and/or modify it under
|
||||||
|
the terms of GNU General Public License v3 or any other later versions.
|
||||||
|
|
||||||
|
phasicFlow is distributed to help others in their research in the field of
|
||||||
|
granular and multiphase flows, but WITHOUT ANY WARRANTY; without even the
|
||||||
|
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef __conveyorBeltMotion_hpp__
|
||||||
|
#define __conveyorBeltMotion_hpp__
|
||||||
|
|
||||||
|
|
||||||
|
#include "MotionModel.hpp"
|
||||||
|
#include "conveyorBelt.hpp"
|
||||||
|
#include "fileDictionary.hpp"
|
||||||
|
|
||||||
|
namespace pFlow
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* conveyor belt model for walls
|
||||||
|
*
|
||||||
|
* This class is used for simulaiton that wall components are conveyor belt.
|
||||||
|
*
|
||||||
|
\verbatim
|
||||||
|
|
||||||
|
// In geometryDict file, this will defines stationary walls
|
||||||
|
...
|
||||||
|
motionModel conveyorBelt;
|
||||||
|
|
||||||
|
// this dictionary is optional
|
||||||
|
conveyorBeltInfo
|
||||||
|
{
|
||||||
|
conveyorBelt1
|
||||||
|
{
|
||||||
|
// the definition based on class conveyorBelt
|
||||||
|
}
|
||||||
|
}
|
||||||
|
...
|
||||||
|
\endverbatim
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
class conveyorBeltMotion
|
||||||
|
:
|
||||||
|
public fileDictionary,
|
||||||
|
public MotionModel<conveyorBeltMotion, conveyorBelt>
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
|
||||||
|
friend MotionModel<conveyorBeltMotion, conveyorBelt>;
|
||||||
|
|
||||||
|
bool impl_isMoving()const
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool impl_move(uint32, real, real)const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void impl_setTime(uint32 ,real ,real )const
|
||||||
|
{}
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
TypeInfo("conveyorBeltMotion");
|
||||||
|
|
||||||
|
conveyorBeltMotion(const objectFile& objf, repository* owner);
|
||||||
|
|
||||||
|
conveyorBeltMotion(
|
||||||
|
const objectFile& objf,
|
||||||
|
const dictionary& dict,
|
||||||
|
repository* owner);
|
||||||
|
|
||||||
|
|
||||||
|
using fileDictionary::write;
|
||||||
|
|
||||||
|
bool write(iOstream& os, const IOPattern& iop)const override;
|
||||||
|
|
||||||
|
static
|
||||||
|
auto noneComponent()
|
||||||
|
{
|
||||||
|
return conveyorBelt();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // pFlow
|
||||||
|
|
||||||
|
|
||||||
|
#endif // __conveyorBeltMotion_hpp__
|
|
@ -0,0 +1,70 @@
|
||||||
|
/*------------------------------- phasicFlow ---------------------------------
|
||||||
|
O C enter of
|
||||||
|
O O E ngineering and
|
||||||
|
O O M ultiscale modeling of
|
||||||
|
OOOOOOO F luid flow
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Copyright (C): www.cemf.ir
|
||||||
|
email: hamid.r.norouzi AT gmail.com
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Licence:
|
||||||
|
This file is part of phasicFlow code. It is a free software for simulating
|
||||||
|
granular and multiphase flows. You can redistribute it and/or modify it under
|
||||||
|
the terms of GNU General Public License v3 or any other later versions.
|
||||||
|
|
||||||
|
phasicFlow is distributed to help others in their research in the field of
|
||||||
|
granular and multiphase flows, but WITHOUT ANY WARRANTY; without even the
|
||||||
|
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "conveyorBelt.hpp"
|
||||||
|
#include "dictionary.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
FUNCTION_H
|
||||||
|
pFlow::conveyorBelt::conveyorBelt(const dictionary& dict)
|
||||||
|
{
|
||||||
|
if(!read(dict))
|
||||||
|
{
|
||||||
|
fatalErrorInFunction<<
|
||||||
|
" error in reading conveyorBelt from dictionary "<< dict.globalName()<<endl;
|
||||||
|
fatalExit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FUNCTION_H
|
||||||
|
bool pFlow::conveyorBelt::read(const dictionary& dict)
|
||||||
|
{
|
||||||
|
|
||||||
|
tangentVelocity_ = dict.getVal<realx3>("tangentVelocity");
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
FUNCTION_H
|
||||||
|
bool pFlow::conveyorBelt::write(dictionary& dict) const
|
||||||
|
{
|
||||||
|
if( !dict.add("tangentVelocity", tangentVelocity_) )
|
||||||
|
{
|
||||||
|
fatalErrorInFunction<<
|
||||||
|
" error in writing tangentVelocity to dictionary "<< dict.globalName()<<endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
FUNCTION_H
|
||||||
|
bool pFlow::conveyorBelt::read(iIstream& is)
|
||||||
|
{
|
||||||
|
|
||||||
|
notImplementedFunction;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
FUNCTION_H
|
||||||
|
bool pFlow::conveyorBelt::write(iOstream& os)const
|
||||||
|
{
|
||||||
|
os.writeWordEntry("tangentVelocity", tangentVelocity_);
|
||||||
|
return true;
|
||||||
|
}
|
|
@ -0,0 +1,108 @@
|
||||||
|
/*------------------------------- phasicFlow ---------------------------------
|
||||||
|
O C enter of
|
||||||
|
O O E ngineering and
|
||||||
|
O O M ultiscale modeling of
|
||||||
|
OOOOOOO F luid flow
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Copyright (C): www.cemf.ir
|
||||||
|
email: hamid.r.norouzi AT gmail.com
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Licence:
|
||||||
|
This file is part of phasicFlow code. It is a free software for simulating
|
||||||
|
granular and multiphase flows. You can redistribute it and/or modify it under
|
||||||
|
the terms of GNU General Public License v3 or any other later versions.
|
||||||
|
|
||||||
|
phasicFlow is distributed to help others in their research in the field of
|
||||||
|
granular and multiphase flows, but WITHOUT ANY WARRANTY; without even the
|
||||||
|
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef __conveyorBelt_hpp__
|
||||||
|
#define __conveyorBelt_hpp__
|
||||||
|
|
||||||
|
|
||||||
|
#include "types.hpp"
|
||||||
|
#include "typeInfo.hpp"
|
||||||
|
#include "streams.hpp"
|
||||||
|
|
||||||
|
namespace pFlow
|
||||||
|
{
|
||||||
|
|
||||||
|
// forward
|
||||||
|
class dictionary;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* conveyor belt model for a wall
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
class conveyorBelt
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
|
||||||
|
realx3 tangentVelocity_{0, 0, 0};
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
TypeInfoNV("conveyorBelt");
|
||||||
|
|
||||||
|
FUNCTION_HD
|
||||||
|
conveyorBelt()=default;
|
||||||
|
|
||||||
|
FUNCTION_H
|
||||||
|
explicit conveyorBelt(const dictionary& dict);
|
||||||
|
|
||||||
|
|
||||||
|
FUNCTION_HD
|
||||||
|
conveyorBelt(const conveyorBelt&) = default;
|
||||||
|
|
||||||
|
conveyorBelt& operator=(const conveyorBelt&) = default;
|
||||||
|
|
||||||
|
INLINE_FUNCTION_HD
|
||||||
|
void setTime(real t)
|
||||||
|
{}
|
||||||
|
|
||||||
|
INLINE_FUNCTION_HD
|
||||||
|
realx3 linVelocityPoint(const realx3 &)const
|
||||||
|
{
|
||||||
|
return tangentVelocity_;
|
||||||
|
}
|
||||||
|
|
||||||
|
INLINE_FUNCTION_HD
|
||||||
|
realx3 transferPoint(const realx3& p, real)const
|
||||||
|
{
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
// - IO operation
|
||||||
|
FUNCTION_H
|
||||||
|
bool read(const dictionary& dict);
|
||||||
|
|
||||||
|
FUNCTION_H
|
||||||
|
bool write(dictionary& dict) const;
|
||||||
|
|
||||||
|
FUNCTION_H
|
||||||
|
bool read(iIstream& is);
|
||||||
|
|
||||||
|
FUNCTION_H
|
||||||
|
bool write(iOstream& os)const;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
inline iOstream& operator <<(iOstream& os, const conveyorBelt& obj)
|
||||||
|
{
|
||||||
|
|
||||||
|
return os;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline iIstream& operator >>(iIstream& is, conveyorBelt& obj)
|
||||||
|
{
|
||||||
|
|
||||||
|
return is;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,71 @@
|
||||||
|
/* -------------------------------*- C++ -*--------------------------------- *\
|
||||||
|
| phasicFlow File |
|
||||||
|
| copyright: www.cemf.ir |
|
||||||
|
\* ------------------------------------------------------------------------- */
|
||||||
|
objectName interaction;
|
||||||
|
objectType dicrionary;
|
||||||
|
fileFormat ASCII;
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
materials (lightMat heavyMat wallMat); // a list of materials names
|
||||||
|
|
||||||
|
densities (1000 1500.0 2500); // density of materials [kg/m3]
|
||||||
|
|
||||||
|
contactListType sortedContactList;
|
||||||
|
|
||||||
|
contactSearch
|
||||||
|
{
|
||||||
|
method NBS; // method for broad search particle-particle
|
||||||
|
|
||||||
|
updateInterval 10;
|
||||||
|
|
||||||
|
sizeRatio 1.1;
|
||||||
|
|
||||||
|
cellExtent 0.55;
|
||||||
|
|
||||||
|
adjustableBox No;
|
||||||
|
}
|
||||||
|
|
||||||
|
model
|
||||||
|
{
|
||||||
|
contactForceModel nonLinearLimited;
|
||||||
|
|
||||||
|
rollingFrictionModel normal;
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
Property (lightMat-lightMat lightMat-heavyMat lightMat-wallMat
|
||||||
|
heavyMat-heavyMat heavyMat-wallMat
|
||||||
|
wallMat-wallMat );
|
||||||
|
*/
|
||||||
|
|
||||||
|
Yeff (1.0e6 1.0e6 1.0e6 // Young modulus [Pa]
|
||||||
|
1.0e6 1.0e6
|
||||||
|
1.0e6);
|
||||||
|
|
||||||
|
Geff (0.8e6 0.8e6 0.8e6 // Shear modulus [Pa]
|
||||||
|
0.8e6 0.8e6
|
||||||
|
0.8e6);
|
||||||
|
|
||||||
|
nu (0.25 0.25 0.25 // Poisson's ratio [-]
|
||||||
|
0.25 0.25
|
||||||
|
0.25);
|
||||||
|
|
||||||
|
en (0.97 0.97 0.85 // coefficient of normal restitution
|
||||||
|
0.97 0.85
|
||||||
|
1.00);
|
||||||
|
|
||||||
|
et (1.0 1.0 1.0 // coefficient of tangential restitution
|
||||||
|
1.0 1.0
|
||||||
|
1.0);
|
||||||
|
|
||||||
|
mu (0.65 0.65 0.35 // dynamic friction
|
||||||
|
0.65 0.35
|
||||||
|
0.35);
|
||||||
|
|
||||||
|
mur (0.1 0.1 0.1 // rolling friction
|
||||||
|
0.1 0.1
|
||||||
|
0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
/* -------------------------------*- C++ -*--------------------------------- *\
|
||||||
|
| phasicFlow File |
|
||||||
|
| copyright: www.cemf.ir |
|
||||||
|
\* ------------------------------------------------------------------------- */
|
||||||
|
objectName particleInsertion;
|
||||||
|
objectType dicrionary;
|
||||||
|
fileFormat ASCII;
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
active Yes; // is insertion active -> yes or no
|
||||||
|
|
||||||
|
checkForCollision No; // is checked -> yes or no
|
||||||
|
|
||||||
|
/*
|
||||||
|
one layers of particles are packed
|
||||||
|
*/
|
||||||
|
|
||||||
|
layer0
|
||||||
|
{
|
||||||
|
timeControl simulationTime;
|
||||||
|
|
||||||
|
regionType cylinder; // type of insertion region
|
||||||
|
|
||||||
|
rate 15000; // insertion rate (particles/s)
|
||||||
|
|
||||||
|
startTime 0; // (s)
|
||||||
|
|
||||||
|
endTime 0.5; // (s)
|
||||||
|
|
||||||
|
insertionInterval 0.025; // s
|
||||||
|
|
||||||
|
cylinderInfo
|
||||||
|
{
|
||||||
|
radius 0.09; // radius of cylinder (m)
|
||||||
|
|
||||||
|
p1 ( 0.0 0.0 0.1 ); // (m,m,m)
|
||||||
|
|
||||||
|
p2 ( 0.0 0.0 0.11); // (m,m,m)
|
||||||
|
}
|
||||||
|
|
||||||
|
setFields
|
||||||
|
{
|
||||||
|
velocity realx3 (0.0 0.0 -0.6); // initial velocity of inserted particles
|
||||||
|
}
|
||||||
|
|
||||||
|
mixture
|
||||||
|
{
|
||||||
|
lightSphere 1; // mixture composition of inserted particles
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
/* -------------------------------*- C++ -*--------------------------------- *\
|
||||||
|
| phasicFlow File |
|
||||||
|
| copyright: www.cemf.ir |
|
||||||
|
\* ------------------------------------------------------------------------- */
|
||||||
|
objectName sphereDict;
|
||||||
|
objectType sphereShape;
|
||||||
|
fileFormat ASCII;
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
names (lightSphere heavySphere); // names of shapes
|
||||||
|
|
||||||
|
diameters (0.007 0.007); // diameter of shapes
|
||||||
|
|
||||||
|
materials (lightMat heavyMat); // material names for shapes
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/sh
|
||||||
|
cd ${0%/*} || exit 1 # Run from this directory
|
||||||
|
|
||||||
|
ls | grep -P "^(([0-9]+\.?[0-9]*)|(\.[0-9]+))$" | xargs -d"\n" rm -rf
|
||||||
|
rm -rf VTK
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/sh
|
||||||
|
cd ${0%/*} || exit 1 # Run from this directory
|
||||||
|
echo "\n<--------------------------------------------------------------------->"
|
||||||
|
echo "1) Creating particles"
|
||||||
|
echo "<--------------------------------------------------------------------->\n"
|
||||||
|
particlesPhasicFlow
|
||||||
|
|
||||||
|
echo "\n<--------------------------------------------------------------------->"
|
||||||
|
echo "2) Creating geometry"
|
||||||
|
echo "<--------------------------------------------------------------------->\n"
|
||||||
|
geometryPhasicFlow
|
||||||
|
|
||||||
|
echo "\n<--------------------------------------------------------------------->"
|
||||||
|
echo "3) Running the case"
|
||||||
|
echo "<--------------------------------------------------------------------->\n"
|
||||||
|
sphereGranFlow
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
|
@ -0,0 +1,65 @@
|
||||||
|
/* -------------------------------*- C++ -*--------------------------------- *\
|
||||||
|
| phasicFlow File |
|
||||||
|
| copyright: www.cemf.ir |
|
||||||
|
\* ------------------------------------------------------------------------- */
|
||||||
|
objectName domainDict;
|
||||||
|
objectType dictionary;
|
||||||
|
fileFormat ASCII;
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
globalBox // Simulation domain: every particles that goes outside this domain will be deleted
|
||||||
|
{
|
||||||
|
min (-0.11 -0.11 -0.41);
|
||||||
|
|
||||||
|
max ( 0.33 0.11 0.41);
|
||||||
|
}
|
||||||
|
|
||||||
|
boundaries
|
||||||
|
{
|
||||||
|
// Determines how often (how many iterations) do you want to
|
||||||
|
|
||||||
|
// rebuild the list of particles in the neighbor list
|
||||||
|
|
||||||
|
// of all boundaries in the simulation domain
|
||||||
|
|
||||||
|
neighborListUpdateInterval 30;
|
||||||
|
|
||||||
|
// Determines how often do you want to update the new changes in the boundary
|
||||||
|
|
||||||
|
updateInterval 10;
|
||||||
|
|
||||||
|
// The distance from the boundary plane within which particles are marked to be in the boundary list
|
||||||
|
|
||||||
|
neighborLength 0.004;
|
||||||
|
|
||||||
|
left
|
||||||
|
{
|
||||||
|
type exit; // other options: periodict, reflective
|
||||||
|
}
|
||||||
|
|
||||||
|
right
|
||||||
|
{
|
||||||
|
type exit; // other options: periodict, reflective
|
||||||
|
}
|
||||||
|
|
||||||
|
bottom
|
||||||
|
{
|
||||||
|
type exit; // other options: periodict, reflective
|
||||||
|
}
|
||||||
|
|
||||||
|
top
|
||||||
|
{
|
||||||
|
type exit; // other options: periodict, reflective
|
||||||
|
}
|
||||||
|
|
||||||
|
rear
|
||||||
|
{
|
||||||
|
type exit; // other options: periodict, reflective
|
||||||
|
}
|
||||||
|
|
||||||
|
front
|
||||||
|
{
|
||||||
|
type exit; // other options: periodict, reflective
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,75 @@
|
||||||
|
/* -------------------------------*- C++ -*--------------------------------- *\
|
||||||
|
| phasicFlow File |
|
||||||
|
| copyright: www.cemf.ir |
|
||||||
|
\* ------------------------------------------------------------------------- */
|
||||||
|
objectName geometryDict;
|
||||||
|
objectType dictionary;
|
||||||
|
fileFormat ASCII;
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
motionModel conveyorBelt; // motion model can be rotatingAxis or stationary or vibrating
|
||||||
|
|
||||||
|
conveyorBeltInfo
|
||||||
|
{
|
||||||
|
conveyorBelt1
|
||||||
|
{
|
||||||
|
tangentVelocity (0.5 0 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
surfaces
|
||||||
|
{
|
||||||
|
cylinderShell
|
||||||
|
{
|
||||||
|
type cylinderWall; // other options: cuboidWall and planeWall
|
||||||
|
|
||||||
|
p1 (0.0 0.0 0.0); // begin point of cylinder axis
|
||||||
|
|
||||||
|
p2 (0.0 0.0 0.4); // end point of cylinder axis
|
||||||
|
|
||||||
|
radius1 0.1; // radius at p1
|
||||||
|
|
||||||
|
radius2 0.1; // radius at p2
|
||||||
|
|
||||||
|
resolution 36; // number of divisions
|
||||||
|
|
||||||
|
material wallMat; // material name of this wall
|
||||||
|
}
|
||||||
|
|
||||||
|
coneShell
|
||||||
|
{
|
||||||
|
type cylinderWall; // other options: cuboidWall and planeWall
|
||||||
|
|
||||||
|
p1 (0.0 0.0 -0.1); // begin point of cylinder axis
|
||||||
|
|
||||||
|
p2 (0.0 0.0 0.0); // end point of cylinder axis
|
||||||
|
|
||||||
|
radius1 0.02; // radius at p1
|
||||||
|
|
||||||
|
radius2 0.1; // radius at p2
|
||||||
|
|
||||||
|
resolution 36; // number of divisions
|
||||||
|
|
||||||
|
material wallMat; // material name of this wall
|
||||||
|
}
|
||||||
|
|
||||||
|
belt
|
||||||
|
{
|
||||||
|
type stlWall; // type of the wall
|
||||||
|
file belt.stl; // file name in stl folder
|
||||||
|
material wallMat; // material name of this wall
|
||||||
|
motion conveyorBelt1; // motion component name
|
||||||
|
}
|
||||||
|
|
||||||
|
box
|
||||||
|
{
|
||||||
|
type stlWall; // type of the wall
|
||||||
|
file box.stl; // file name in stl folder
|
||||||
|
material wallMat; // material name of this wall
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
/* -------------------------------*- C++ -*--------------------------------- *\
|
||||||
|
| phasicFlow File |
|
||||||
|
| copyright: www.cemf.ir |
|
||||||
|
\* ------------------------------------------------------------------------- */
|
||||||
|
objectName particlesDict;
|
||||||
|
objectType dictionary;
|
||||||
|
fileFormat ASCII;
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
setFields
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
Default value for fields defined for particles
|
||||||
|
|
||||||
|
These fields should always be defined for simulations with
|
||||||
|
|
||||||
|
spherical particles.
|
||||||
|
*/
|
||||||
|
|
||||||
|
defaultValue
|
||||||
|
{
|
||||||
|
velocity realx3 (0 0 0); // linear velocity (m/s)
|
||||||
|
|
||||||
|
acceleration realx3 (0 0 0); // linear acceleration (m/s2)
|
||||||
|
|
||||||
|
rVelocity realx3 (0 0 0); // rotational velocity (rad/s)
|
||||||
|
|
||||||
|
shapeName word lightSphere; // name of the particle shape
|
||||||
|
}
|
||||||
|
|
||||||
|
selectors
|
||||||
|
{}
|
||||||
|
}
|
||||||
|
|
||||||
|
positionParticles // positions particles
|
||||||
|
{
|
||||||
|
method empty; // other options: ordered and random
|
||||||
|
|
||||||
|
regionType box; // other options: cylinder and sphere
|
||||||
|
|
||||||
|
boxInfo // box region for positioning particles
|
||||||
|
{
|
||||||
|
min (-0.08 -0.08 0.015); // lower corner point of the box
|
||||||
|
|
||||||
|
max ( 0.08 0.08 0.098); // upper corner point of the box
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
/* -------------------------------*- C++ -*--------------------------------- *\
|
||||||
|
| phasicFlow File |
|
||||||
|
| copyright: www.cemf.ir |
|
||||||
|
\* ------------------------------------------------------------------------- */
|
||||||
|
objectName settingsDict;
|
||||||
|
objectType dictionary;
|
||||||
|
fileFormat ASCII;
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
run layerdSiloFilling;
|
||||||
|
|
||||||
|
dt 0.00005; // time step for integration (s)
|
||||||
|
|
||||||
|
startTime 0.0; // start time for simulation
|
||||||
|
|
||||||
|
endTime 5.0; // end time for simulation
|
||||||
|
|
||||||
|
saveInterval 0.05; // time interval for saving the simulation
|
||||||
|
|
||||||
|
timePrecision 6; // maximum number of digits for time folder
|
||||||
|
|
||||||
|
g (0 0 -9.8); // gravity vector (m/s2)
|
||||||
|
|
||||||
|
// save data objects that are not automatically saved on disk.
|
||||||
|
|
||||||
|
// overrides the default behavior
|
||||||
|
|
||||||
|
includeObjects (diameter);
|
||||||
|
|
||||||
|
// exclude unnecessary data from saving on disk
|
||||||
|
|
||||||
|
excludeObjects (rVelocity.dy1 pStructPosition.dy1 pStructVelocity.dy1);
|
||||||
|
|
||||||
|
integrationMethod AdamsBashforth2; // integration method
|
||||||
|
|
||||||
|
writeFormat ascii; // data writting format (ascii or binary)
|
||||||
|
|
||||||
|
timersReport Yes; // report timers
|
||||||
|
|
||||||
|
timersReportInterval 0.01; // time interval for reporting timers
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,198 @@
|
||||||
|
solid
|
||||||
|
facet normal -1.000000 0.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex -0.1 0.045 -0.145
|
||||||
|
vertex -0.1 0.05 -0.12
|
||||||
|
vertex -0.1 0.05 -0.15
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal -1.000000 0.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex -0.1 0.045 -0.145
|
||||||
|
vertex -0.1 0.045 -0.12
|
||||||
|
vertex -0.1 0.05 -0.12
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal -1.000000 0.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex -0.1 0.05 -0.15
|
||||||
|
vertex -0.1 -0.05 -0.15
|
||||||
|
vertex -0.1 0.045 -0.145
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal -1.000000 0.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex -0.1 -0.05 -0.15
|
||||||
|
vertex -0.1 -0.045 -0.145
|
||||||
|
vertex -0.1 0.045 -0.145
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal -1.000000 0.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex -0.1 -0.045 -0.145
|
||||||
|
vertex -0.1 -0.05 -0.12
|
||||||
|
vertex -0.1 -0.045 -0.12
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal -1.000000 0.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex -0.1 -0.05 -0.15
|
||||||
|
vertex -0.1 -0.05 -0.12
|
||||||
|
vertex -0.1 -0.045 -0.145
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 0.000000 -1.000000
|
||||||
|
outer loop
|
||||||
|
vertex -0.1 -0.05 -0.15
|
||||||
|
vertex -0.1 0.05 -0.15
|
||||||
|
vertex 0.2 0.05 -0.15
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 0.000000 -1.000000
|
||||||
|
outer loop
|
||||||
|
vertex -0.1 -0.05 -0.15
|
||||||
|
vertex 0.2 0.05 -0.15
|
||||||
|
vertex 0.2 -0.05 -0.15
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 1.000000 0.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.2 0.05 -0.12
|
||||||
|
vertex 0.2 0.045 -0.145
|
||||||
|
vertex 0.2 0.05 -0.15
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 1.000000 -0.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.2 0.045 -0.12
|
||||||
|
vertex 0.2 0.045 -0.145
|
||||||
|
vertex 0.2 0.05 -0.12
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 1.000000 0.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.2 -0.05 -0.15
|
||||||
|
vertex 0.2 0.05 -0.15
|
||||||
|
vertex 0.2 0.045 -0.145
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 1.000000 -0.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.2 -0.045 -0.145
|
||||||
|
vertex 0.2 -0.05 -0.15
|
||||||
|
vertex 0.2 0.045 -0.145
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 1.000000 -0.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.2 -0.05 -0.12
|
||||||
|
vertex 0.2 -0.045 -0.145
|
||||||
|
vertex 0.2 -0.045 -0.12
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 1.000000 0.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.2 -0.05 -0.12
|
||||||
|
vertex 0.2 -0.05 -0.15
|
||||||
|
vertex 0.2 -0.045 -0.145
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 -1.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex -0.1 -0.05 -0.15
|
||||||
|
vertex 0.2 -0.05 -0.15
|
||||||
|
vertex 0.2 -0.05 -0.12
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 -1.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex -0.1 -0.05 -0.15
|
||||||
|
vertex 0.2 -0.05 -0.12
|
||||||
|
vertex -0.1 -0.05 -0.12
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 1.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.2 0.05 -0.12
|
||||||
|
vertex -0.1 0.05 -0.15
|
||||||
|
vertex -0.1 0.05 -0.12
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 1.000000 -0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.2 0.05 -0.15
|
||||||
|
vertex -0.1 0.05 -0.15
|
||||||
|
vertex 0.2 0.05 -0.12
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 0.000000 1.000000
|
||||||
|
outer loop
|
||||||
|
vertex -0.1 -0.05 -0.12
|
||||||
|
vertex 0.2 -0.05 -0.12
|
||||||
|
vertex 0.2 -0.045 -0.12
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal -0.000000 0.000000 1.000000
|
||||||
|
outer loop
|
||||||
|
vertex -0.1 -0.045 -0.12
|
||||||
|
vertex -0.1 -0.05 -0.12
|
||||||
|
vertex 0.2 -0.045 -0.12
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 0.000000 1.000000
|
||||||
|
outer loop
|
||||||
|
vertex -0.1 0.045 -0.12
|
||||||
|
vertex 0.2 0.045 -0.12
|
||||||
|
vertex 0.2 0.05 -0.12
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal -0.000000 0.000000 1.000000
|
||||||
|
outer loop
|
||||||
|
vertex -0.1 0.05 -0.12
|
||||||
|
vertex -0.1 0.045 -0.12
|
||||||
|
vertex 0.2 0.05 -0.12
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 -1.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex -0.1 0.045 -0.145
|
||||||
|
vertex 0.2 0.045 -0.145
|
||||||
|
vertex 0.2 0.045 -0.12
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 -1.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex -0.1 0.045 -0.145
|
||||||
|
vertex 0.2 0.045 -0.12
|
||||||
|
vertex -0.1 0.045 -0.12
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 0.000000 1.000000
|
||||||
|
outer loop
|
||||||
|
vertex -0.1 -0.045 -0.145
|
||||||
|
vertex 0.2 -0.045 -0.145
|
||||||
|
vertex 0.2 0.045 -0.145
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal -0.000000 0.000000 1.000000
|
||||||
|
outer loop
|
||||||
|
vertex -0.1 0.045 -0.145
|
||||||
|
vertex -0.1 -0.045 -0.145
|
||||||
|
vertex 0.2 0.045 -0.145
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 1.000000 -0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.2 -0.045 -0.145
|
||||||
|
vertex -0.1 -0.045 -0.12
|
||||||
|
vertex 0.2 -0.045 -0.12
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 1.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.2 -0.045 -0.145
|
||||||
|
vertex -0.1 -0.045 -0.145
|
||||||
|
vertex -0.1 -0.045 -0.12
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
endsolid
|
|
@ -0,0 +1,198 @@
|
||||||
|
solid
|
||||||
|
facet normal -1.000000 0.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.182 -0.073 -0.18
|
||||||
|
vertex 0.182 0.069 -0.18
|
||||||
|
vertex 0.182 0.069 -0.28
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal -1.000000 0.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.182 -0.073 -0.18
|
||||||
|
vertex 0.182 0.069 -0.28
|
||||||
|
vertex 0.182 -0.073 -0.28
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal -0.000000 -1.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.323 -0.073 -0.18
|
||||||
|
vertex 0.182 -0.073 -0.18
|
||||||
|
vertex 0.182 -0.073 -0.28
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 -1.000000 -0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.323 -0.073 -0.18
|
||||||
|
vertex 0.182 -0.073 -0.28
|
||||||
|
vertex 0.323 -0.073 -0.28
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 1.000000 0.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.323 0.069 -0.18
|
||||||
|
vertex 0.323 -0.073 -0.18
|
||||||
|
vertex 0.323 -0.073 -0.28
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 1.000000 0.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.323 0.069 -0.18
|
||||||
|
vertex 0.323 -0.073 -0.28
|
||||||
|
vertex 0.323 0.069 -0.28
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 1.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.182 0.069 -0.28
|
||||||
|
vertex 0.323 0.069 -0.18
|
||||||
|
vertex 0.323 0.069 -0.28
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal -0.000000 1.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.182 0.069 -0.18
|
||||||
|
vertex 0.323 0.069 -0.18
|
||||||
|
vertex 0.182 0.069 -0.28
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 0.000000 -1.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.182 0.069 -0.28
|
||||||
|
vertex 0.323 0.069 -0.28
|
||||||
|
vertex 0.182 -0.073 -0.28
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 0.000000 -1.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.182 -0.073 -0.28
|
||||||
|
vertex 0.323 0.069 -0.28
|
||||||
|
vertex 0.323 -0.073 -0.28
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 0.000000 1.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.323 -0.073 -0.18
|
||||||
|
vertex 0.318 -0.068 -0.18
|
||||||
|
vertex 0.187 -0.068 -0.18
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 0.000000 1.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.323 -0.073 -0.18
|
||||||
|
vertex 0.187 -0.068 -0.18
|
||||||
|
vertex 0.182 -0.073 -0.18
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 0.000000 1.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.187 0.064 -0.18
|
||||||
|
vertex 0.182 0.069 -0.18
|
||||||
|
vertex 0.182 -0.073 -0.18
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 0.000000 1.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.187 0.064 -0.18
|
||||||
|
vertex 0.182 -0.073 -0.18
|
||||||
|
vertex 0.187 -0.068 -0.18
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 0.000000 1.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.318 0.064 -0.18
|
||||||
|
vertex 0.318 -0.068 -0.18
|
||||||
|
vertex 0.323 -0.073 -0.18
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 0.000000 1.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.323 0.069 -0.18
|
||||||
|
vertex 0.318 0.064 -0.18
|
||||||
|
vertex 0.323 -0.073 -0.18
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 0.000000 1.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.323 0.069 -0.18
|
||||||
|
vertex 0.182 0.069 -0.18
|
||||||
|
vertex 0.187 0.064 -0.18
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 0.000000 1.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.323 0.069 -0.18
|
||||||
|
vertex 0.187 0.064 -0.18
|
||||||
|
vertex 0.318 0.064 -0.18
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 1.000000 0.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.187 0.064 -0.18
|
||||||
|
vertex 0.187 -0.068 -0.18
|
||||||
|
vertex 0.187 0.064 -0.275
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 1.000000 0.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.187 0.064 -0.275
|
||||||
|
vertex 0.187 -0.068 -0.18
|
||||||
|
vertex 0.187 -0.068 -0.275
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal -0.000000 1.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.187 -0.068 -0.18
|
||||||
|
vertex 0.318 -0.068 -0.18
|
||||||
|
vertex 0.187 -0.068 -0.275
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 1.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.187 -0.068 -0.275
|
||||||
|
vertex 0.318 -0.068 -0.18
|
||||||
|
vertex 0.318 -0.068 -0.275
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal -1.000000 0.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.318 -0.068 -0.18
|
||||||
|
vertex 0.318 0.064 -0.18
|
||||||
|
vertex 0.318 -0.068 -0.275
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal -1.000000 0.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.318 -0.068 -0.275
|
||||||
|
vertex 0.318 0.064 -0.18
|
||||||
|
vertex 0.318 0.064 -0.275
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal -0.000000 -1.000000 -0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.318 0.064 -0.18
|
||||||
|
vertex 0.187 0.064 -0.18
|
||||||
|
vertex 0.318 0.064 -0.275
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 -1.000000 0.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.318 0.064 -0.275
|
||||||
|
vertex 0.187 0.064 -0.18
|
||||||
|
vertex 0.187 0.064 -0.275
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 0.000000 1.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.318 0.064 -0.275
|
||||||
|
vertex 0.187 0.064 -0.275
|
||||||
|
vertex 0.187 -0.068 -0.275
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
facet normal 0.000000 0.000000 1.000000
|
||||||
|
outer loop
|
||||||
|
vertex 0.318 0.064 -0.275
|
||||||
|
vertex 0.187 -0.068 -0.275
|
||||||
|
vertex 0.318 -0.068 -0.275
|
||||||
|
endloop
|
||||||
|
endfacet
|
||||||
|
endsolid
|
Loading…
Reference in New Issue