6.4. Defining a new Process class

To define a new Process class, at least fire() and initialize() methods must be defined.

VariableReference, VariableReferenceVector

Example 6-2. SimpleProcess.cpp

    
    #include "libecs.hpp"
    #include "Process.hpp"
    #include "PropertySlotMaker.hpp"
  5 
    USE_LIBECS;
    
    LIBECS_DM_CLASS( SimpleProcess, Process )
    {
 10 
     public:
    
      LIBECS_DM_OBJECT( SimpleFluxProcess, Process )
        {
 15       PROPERTYSLOT_SET_GET( Real, k );
        }
    
      SimpleProcess()
        :
 20   k( 0.0 )
        {
          ; // do nothing
        }
    
 25   SIMPLE_SET_GET_METHOD( Real, k );
    
      virtual void initialize()
        {
          Process::initialize();
 30       S0 = getVariableReference( "S0" );
        }
    
      virtual void fire()
        {
 35       setFlux( k * S0.getConcentration() );
        }
    
     protected:
    
 40   Real k;
      VariableReference S0;
    };
    
    LIBECS_DM_INIT( SimpleProcess, Process );
 45