[Avida-SVN] r1402 - in branches/energy: Avida.xcodeproj source/actions
beckma24 at myxo.css.msu.edu
beckma24 at myxo.css.msu.edu
Thu Mar 15 10:38:10 PDT 2007
Author: beckma24
Date: 2007-03-15 13:38:10 -0400 (Thu, 15 Mar 2007)
New Revision: 1402
Modified:
branches/energy/Avida.xcodeproj/project.pbxproj
branches/energy/source/actions/EnvironmentActions.cc
Log:
Added SetPeriodicResource which adjusts the consentration of a resource using a sine wave.
Modified: branches/energy/Avida.xcodeproj/project.pbxproj
===================================================================
--- branches/energy/Avida.xcodeproj/project.pbxproj 2007-03-15 14:07:34 UTC (rev 1401)
+++ branches/energy/Avida.xcodeproj/project.pbxproj 2007-03-15 17:38:10 UTC (rev 1402)
@@ -887,7 +887,7 @@
70DCAC77097AF730002F8733 /* key_chart */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = key_chart; sourceTree = "<group>"; };
70DCAC78097AF730002F8733 /* viewer.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = viewer.cc; sourceTree = "<group>"; };
70DCAC9B097AF7C0002F8733 /* primitive.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = primitive.cc; sourceTree = "<group>"; };
- 70DCAD1C097AF7CC002F8733 /* avida-s */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "compiled.mach-o.executable"; path = "avida-s"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 70DCAD1C097AF7CC002F8733 /* avida-s */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "avida-s"; sourceTree = BUILT_PRODUCTS_DIR; };
70DCAD1F097AF81A002F8733 /* AvidaScript.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AvidaScript.h; sourceTree = "<group>"; };
70DCAD20097AF81A002F8733 /* cLexer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = cLexer.h; sourceTree = "<group>"; };
70DCAD21097AF81A002F8733 /* cLexer.l */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.lex; path = cLexer.l; sourceTree = "<group>"; };
Modified: branches/energy/source/actions/EnvironmentActions.cc
===================================================================
--- branches/energy/source/actions/EnvironmentActions.cc 2007-03-15 14:07:34 UTC (rev 1401)
+++ branches/energy/source/actions/EnvironmentActions.cc 2007-03-15 17:38:10 UTC (rev 1402)
@@ -22,6 +22,7 @@
*
*/
+#include "math.h"
#include "EnvironmentActions.h"
#include "cAction.h"
@@ -266,7 +267,45 @@
};
+//TODO remove print stament and include
+#include <iostream>
+class cActionSetPeriodicResource : public cAction
+{
+private:
+ cString m_res_name;
+ double m_res_count;
+ double amplitude;
+ double frequency;
+ double phaseShift;
+ double initY;
+public:
+ cActionSetPeriodicResource(cWorld* world, const cString& args): cAction(world, args), m_res_name(""), amplitude(1.0),
+ frequency(1.0), phaseShift(0.0), initY(0.0)
+ {
+ cString largs(args);
+ if (largs.GetSize()) m_res_name = largs.PopWord();
+ if (largs.GetSize()) amplitude = largs.PopWord().AsDouble();
+ if (largs.GetSize()) frequency = largs.PopWord().AsDouble();
+ if (largs.GetSize()) phaseShift = largs.PopWord().AsDouble();
+ if (largs.GetSize()) initY = largs.PopWord().AsDouble();
+ }
+
+ static const cString GetDescription() { return "Arguments: <string reaction_name> <string amplitude> <string pi/frequence> <phaseShift*pi> <string initial_Y>"; }
+
+ void Process(cAvidaContext& ctx)
+ {
+ int time = m_world->GetStats().GetUpdate();
+ m_res_count = amplitude * sin(M_PI/frequency * time - phaseShift * M_PI) + initY;
+// std::cout << "Update " << time << " Y = " << m_res_count << std::endl;
+// std::cout << m_res_count <<" = " << amplitude <<" * sin("<<frequency <<" * " << time <<" - "<< phaseShift<<") + "<<initY<<std::endl;
+ cResource* res = m_world->GetEnvironment().GetResourceLib().GetResource(m_res_name);
+ if (res != NULL) m_world->GetPopulation().SetResource(res->GetID(), m_res_count);
+
+ }
+};
+
+
void RegisterEnvironmentActions(cActionLibrary* action_lib)
{
action_lib->Register<cActionInjectResource>("InjectResource");
@@ -274,6 +313,7 @@
action_lib->Register<cActionOutflowScaledResource>("OutflowScaledResource");
action_lib->Register<cActionSetResource>("SetResource");
action_lib->Register<cActionSetCellResource>("SetCellResource");
+ action_lib->Register<cActionSetPeriodicResource>("SetPeriodicResource");
action_lib->Register<cActionSetReactionValue>("SetReactionValue");
action_lib->Register<cActionSetReactionValueMult>("SetReactionValueMult");
More information about the Avida-cvs
mailing list