Simon Consoir (d351db8c) at 29 Mar 11:45
working with threads
Simon Consoir (efe2cc16) at 20 Mar 13:33
performance tracking
Simon Consoir (a2633512) at 06 Mar 12:29
container file, time tracking, model.props
... and 1 more commit
Simon Consoir (f8a6a08e) at 03 Jan 14:38
created bi prosumer behavior
Felix Wege (72ec2938) at 28 Sep 11:41
Update villasnode submodule
Felix Wege (f063cd33) at 14 Sep 17:09
fix url of VILLASnode submodule
Currently the scalability of the warm water profiles (thermal demand) is read as the last parameter of a subtype if this line in the agent_creator method (Model) is not commented. A second column containing the scaling factor of the second profile should be added to the subtypes in the components.csv file. This affects also the https://git.rwth-aachen.de/acs/research/swarmgrid/scenariogenerator project as the column containing S_r will be shifted to the right by one column through this.
This issue is obsolete as we are not working with warm water profiles in DistAIX any more.
I like the idea of @felix.wege (see #15 ) to create an agent behavior that uses a loopback VILLASnode type to loop a value from an agent to itself once per simulation time step through the VILLASinterface.
Once !15 is merged, this can be implemented.
Update: (see also #15 ) VILLASinterface is a separate library now. It is only used in the Agent behaviors and nowhere else in the code of DistAIX. The architecture described above is fulfilled.
Next step: Definition of API for AgentBehavior
class and DistAIX' Model
and Agent
classes
Sonja Happ (48177bb5) at 01 Jun 12:05
improve documentation, error logs, and error handling of Villas_int...
Things that are not (yet) working well, but are not too critical:
VILLASnode offers the opportunity to create a logfile instead of putting the log on std::cerr
. The file path is provided in the VILLAS json config file. The respective log file (e.g. villas_rank0.log
) is created by VILLASnode, but not filled with any content. The VILLASnode logs of all ranks go to the error
file for now. This is probably a problem within VILLASnode that should be fixed.
The VILLASnode type is stopped in the method Model::global_behavior_cleanup()
which calls the respective static behavior method to stop the node type in use.
The agents' VILLASnodes are disconnected and destroyed in the implicit destructors (repast context of Model --> agent destructor --> behavior destructor --> VILLASinterface destructor). It may happen that a node type is already stopped in the model destructor before all agent destructors have been called implicitly through the repast context. Especially for large models this case is likely to happen. In this case, the simulation will crash at the end with a VILLASnode error message that states an assertion failure. This is a problem of asynchronicity and order of destructors. Making the repast context of the Model class a dynamic variable (so that we need to explicitly delete it) would help. However, this would be a significant intrusion into the code and worth a separate issue.
[Edit 01.06.2022] For now, the destructor of the VILLAS_interface class refrains from deleting the VILLASnode instance if the stop() method of the instance returned an error (respective log message is written to error file). This does not solve the general problem, but it prevents the simulation from crashing at the end.
The problem is not critical for the actual simulation as it only happens during disconnection and cleanup procedures and only for node types that require a process-wide init (e.g. MQTT). It can only become very relevant if VILLASInterface is used in combination with DBconnector. The cassandra database interface runs a few threads per process that read the async. callbacks of the DB to confirm that all data is successfully stored in the DB. These threads may take longer to complete their job, than the actual simulation runtime. If the simulation crashes beforehand because of the problem described above, result data may not be stored in the DB properly.
The following deprecated boost headers are used by DistAIX
boost/progress.hpp
boost/timer.hpp
They should be replaced by the facilities provided in
boost/timer/timer.hpp
and/ or
boost/timer/progress_display.hpp
Sonja Happ (71d2354c) at 31 May 15:56
disable NSGI node type if openssl version is smaller than 1.0.3 (bu...
This MR also solves #12 (closed) in df85caee.
Sonja Happ (df85caee) at 31 May 15:23
fix deprecated boost progress header, backguard compatibility with ...