1 /* 2 * cSpatialResCount.h 3 * Avida 4 * 5 * Called "spatial_res_count.hh" prior to 12/5/05. 6 * Copyright 1999-2011 Michigan State University. All rights reserved. 7 * Copyright 1993-2001 California Institute of Technology. 8 * 9 * 10 * This file is part of Avida. 11 * 12 * Avida is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License 13 * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. 14 * 15 * Avida is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public License along with Avida. 19 * If not, see <http://www.gnu.org/licenses/>. 20 * 21 */ 22 23 /*! Class to keep track of amounts of localized resources. */ 24 25 #ifndef cSpatialResCount_h 26 #define cSpatialResCount_h 27 28 #ifndef cAvidaContext_h 29 #include "cAvidaContext.h" 30 #endif 31 32 #ifndef cSpatialCountElem_h 33 #include "cSpatialCountElem.h" 34 #endif 35 #ifndef tArray_h 36 #include "tArray.h" 37 #endif 38 39 #ifndef cResource_h 40 #include "cResource.h" 41 #endif 42 43 class cSpatialResCount 44 { 45 private: 46 tArray<cSpatialCountElem> grid; 47 double m_initial; 48 double xdiffuse, ydiffuse; 49 double xgravity, ygravity; 50 int inflowX1, inflowX2, inflowY1, inflowY2; 51 int outflowX1, outflowX2, outflowY1, outflowY2; 52 int geometry; 53 int world_x, world_y, num_cells; 54 int curr_peakx, curr_peaky; 55 /* instead of creating a new array use the existing one from cResource */ 56 tArray<cCellResource> *cell_list_ptr; 57 bool m_modified; 58 59 public: 60 cSpatialResCount(); 61 cSpatialResCount(int inworld_x, int inworld_y, int ingeometry); 62 cSpatialResCount(int inworld_x, int inworld_y, int ingeometry, 63 double inxdiffuse, double inydiffuse, 64 double inxgravity, double inygravity); 65 virtual ~cSpatialResCount(); 66 67 void ResizeClear(int inworld_x, int inworld_y, int ingeometry); 68 void SetPointers(); 69 void CheckRanges(); 70 void SetCellList(tArray<cCellResource> *in_cell_list_ptr); GetSize()71 int GetSize() const { return grid.GetSize(); } GetX()72 int GetX() const { return world_x; } GetY()73 int GetY() const { return world_y; } GetCellListSize()74 int GetCellListSize() const { return cell_list_ptr->GetSize(); } Element(int x)75 cSpatialCountElem& Element(int x) { return grid[x]; } 76 void Rate(int x, double ratein) const; 77 void Rate(int x, int y, double ratein) const; 78 void State(int x); 79 void State(int x, int y); 80 double GetAmount(int x) const; 81 double GetAmount(int x, int y) const; 82 void RateAll(double ratein); 83 virtual void StateAll(); 84 void FlowAll(); 85 double SumAll() const; 86 void Source(double amount) const; 87 void CellInflow() const; 88 void Sink(double percent) const; 89 void CellOutflow() const; 90 void SetCellAmount(int cell_id, double res); SetInitial(double initial)91 void SetInitial(double initial) { m_initial = initial; } GetInitial()92 double GetInitial() const { return m_initial; } SetGeometry(int in_geometry)93 void SetGeometry(int in_geometry) { geometry = in_geometry; } SetXdiffuse(double in_xdiffuse)94 void SetXdiffuse(double in_xdiffuse) { xdiffuse = in_xdiffuse; } SetXgravity(double in_xgravity)95 void SetXgravity(double in_xgravity) { xgravity = in_xgravity; } SetYdiffuse(double in_ydiffuse)96 void SetYdiffuse(double in_ydiffuse) { ydiffuse = in_ydiffuse; } SetYgravity(double in_ygravity)97 void SetYgravity(double in_ygravity) { ygravity = in_ygravity; } SetInflowX1(int in_inflowX1)98 void SetInflowX1(int in_inflowX1) { inflowX1 = in_inflowX1; } SetInflowX2(int in_inflowX2)99 void SetInflowX2(int in_inflowX2) { inflowX2 = in_inflowX2; } SetInflowY1(int in_inflowY1)100 void SetInflowY1(int in_inflowY1) { inflowY1 = in_inflowY1; } SetInflowY2(int in_inflowY2)101 void SetInflowY2(int in_inflowY2) { inflowY2 = in_inflowY2; } SetOutflowX1(int in_outflowX1)102 void SetOutflowX1(int in_outflowX1) { outflowX1 = in_outflowX1; } SetOutflowX2(int in_outflowX2)103 void SetOutflowX2(int in_outflowX2) { outflowX2 = in_outflowX2; } SetOutflowY1(int in_outflowY1)104 void SetOutflowY1(int in_outflowY1) { outflowY1 = in_outflowY1; } SetOutflowY2(int in_outflowY2)105 void SetOutflowY2(int in_outflowY2) { outflowY2 = in_outflowY2; } UpdateCount(cAvidaContext &)106 virtual void UpdateCount(cAvidaContext&) { ; } 107 void ResetResourceCounts(); SetModified(bool in_modified)108 void SetModified(bool in_modified) { m_modified = in_modified; } GetModified()109 bool GetModified() { return m_modified; } 110 SetGradInitialPlatVal(double)111 virtual void SetGradInitialPlatVal(double) { ; } SetGradPeakX(int)112 virtual void SetGradPeakX(int) { ; } SetGradPeakY(int)113 virtual void SetGradPeakY(int) { ; } SetGradHeight(int)114 virtual void SetGradHeight(int) { ; } SetGradSpread(int)115 virtual void SetGradSpread(int) { ; } SetGradPlateau(double)116 virtual void SetGradPlateau(double) { ; } SetGradDecay(int)117 virtual void SetGradDecay(int) { ; } SetGradMaxX(int)118 virtual void SetGradMaxX(int) { ; } SetGradMaxY(int)119 virtual void SetGradMaxY(int) { ; } SetGradMinX(int)120 virtual void SetGradMinX(int) { ; } SetGradMinY(int)121 virtual void SetGradMinY(int) { ; } SetGradMoveScaler(double)122 virtual void SetGradMoveScaler(double) { ; } SetGradUpdateStep(int)123 virtual void SetGradUpdateStep(int) { ; } SetGradIsHalo(bool)124 virtual void SetGradIsHalo(bool) { ; } SetGradHaloInnerRad(int)125 virtual void SetGradHaloInnerRad(int) { ; } SetGradHaloWidth(int)126 virtual void SetGradHaloWidth(int) { ; } SetGradHaloX(int)127 virtual void SetGradHaloX(int) { ; } SetGradHaloY(int)128 virtual void SetGradHaloY(int) { ; } SetGradMoveSpeed(int)129 virtual void SetGradMoveSpeed(int) { ; } SetGradPlatInflow(double)130 virtual void SetGradPlatInflow(double) { ; } SetGradPlatOutflow(double)131 virtual void SetGradPlatOutflow(double) { ; } SetGradConeInflow(double)132 virtual void SetGradConeInflow(double) { ; } SetGradConeOutflow(double)133 virtual void SetGradConeOutflow(double) { ; } SetGradientInflow(double)134 virtual void SetGradientInflow(double) { ; } SetGradPlatVarInflow(double,double,int)135 virtual void SetGradPlatVarInflow(double, double, int) { ; } SetPredatoryResource(double,int)136 virtual void SetPredatoryResource(double, int) { ; } SetProbabilisticResource(cAvidaContext & ctx,double,double,double,double,double,int,int,int)137 virtual void SetProbabilisticResource(cAvidaContext& ctx, double, double, double, double, double, int, int, int) { ; } SetGradPlatIsCommon(bool)138 virtual void SetGradPlatIsCommon(bool) { ; } SetGradFloor(double)139 virtual void SetGradFloor(double) { ; } SetGradHabitat(int)140 virtual void SetGradHabitat(int) { ; } SetGradMinSize(int)141 virtual void SetGradMinSize(int) { ; } SetGradMaxSize(int)142 virtual void SetGradMaxSize(int) { ; } SetGradConfig(int)143 virtual void SetGradConfig(int) { ; } SetGradCount(int)144 virtual void SetGradCount(int) { ; } SetGradResistance(double)145 virtual void SetGradResistance(double) { ; } SetGradThreshold(double)146 virtual void SetGradThreshold(double) { ; } SetGradRefuge(int)147 virtual void SetGradRefuge(int) { ; } 148 ResetGradRes(cAvidaContext & ctx,int worldx,int worldy)149 virtual void ResetGradRes(cAvidaContext& ctx, int worldx, int worldy) { (void)ctx, (void)worldx, (void)worldy; } 150 SetCurrPeakX(int in_curr_x)151 void SetCurrPeakX(int in_curr_x) { curr_peakx = in_curr_x; } SetCurrPeakY(int in_curr_y)152 void SetCurrPeakY(int in_curr_y) { curr_peaky = in_curr_y; } GetCurrPeakX()153 int GetCurrPeakX() { return curr_peakx; } GetCurrPeakY()154 int GetCurrPeakY() { return curr_peaky; } 155 GetWallCells()156 virtual tArray<int>* GetWallCells() { return NULL; } GetMinUsedX()157 virtual int GetMinUsedX() { return -1; } GetMinUsedY()158 virtual int GetMinUsedY() { return -1; } GetMaxUsedX()159 virtual int GetMaxUsedX() { return -1; } GetMaxUsedY()160 virtual int GetMaxUsedY() { return -1; } 161 }; 162 163 #endif 164