36 #include "CryptSimulationBoundaryCondition.hpp"
37 #include "WntConcentration.hpp"
38 #include "AbstractCentreBasedCellPopulation.hpp"
39 #include "RandomNumberGenerator.hpp"
40 #include "StemCellProliferativeType.hpp"
42 template<
unsigned DIM>
45 mUseJiggledBottomCells(false)
49 template<
unsigned DIM>
55 mUseJiggledBottomCells =
false;
70 cell_iter != this->mpCellPopulation->End();
74 unsigned node_index = this->mpCellPopulation->GetLocationIndexUsingCell(*cell_iter);
77 Node<DIM>* p_node = this->mpCellPopulation->GetNode(node_index);
85 if (cell_iter->GetCellProliferativeType()->template IsType<StemCellProliferativeType>())
88 c_vector<double, DIM> old_node_location = rOldLocations.find(p_node)->second;
100 if (mUseJiggledBottomCells)
119 for (
unsigned node_index=0; node_index<this->mpCellPopulation->GetNumNodes(); node_index++)
122 Node<DIM>* p_node = this->mpCellPopulation->GetNode(node_index);
124 if (!is_wnt_included)
130 double node_height = rOldLocations.find(p_node)->second[DIM-1];
131 if (node_height < DBL_EPSILON)
143 if (mUseJiggledBottomCells)
157 template<
unsigned DIM>
160 bool boundary_condition_satisfied =
true;
167 cell_iter != this->mpCellPopulation->End();
171 unsigned node_index = this->mpCellPopulation->GetLocationIndexUsingCell(*cell_iter);
174 Node<DIM>* p_node = this->mpCellPopulation->GetNode(node_index);
179 boundary_condition_satisfied =
false;
184 return boundary_condition_satisfied;
187 template<
unsigned DIM>
190 mUseJiggledBottomCells = useJiggledBottomCells;
193 template<
unsigned DIM>
196 return mUseJiggledBottomCells;
199 template<
unsigned DIM>
202 *rParamsFile <<
"\t\t<UseJiggledBottomCells>" << mUseJiggledBottomCells <<
"</UseJiggledBottomCells>\n";
void ImposeBoundaryCondition(const std::map< Node< DIM > *, c_vector< double, DIM > > &rOldLocations)
bool GetUseJiggledBottomCells()
#define EXPORT_TEMPLATE_CLASS_SAME_DIMS(CLASS)
static WntConcentration * Instance()
CryptSimulationBoundaryCondition(AbstractCellPopulation< DIM > *pCellPopulation)
static RandomNumberGenerator * Instance()
const c_vector< double, SPACE_DIM > & rGetLocation() const
bool VerifyBoundaryCondition()
void SetUseJiggledBottomCells(bool useJiggledBottomCells)
void OutputCellPopulationBoundaryConditionParameters(out_stream &rParamsFile)
c_vector< double, SPACE_DIM > & rGetModifiableLocation()
virtual void OutputCellPopulationBoundaryConditionParameters(out_stream &rParamsFile)=0