-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoutputshedulers.hpp
62 lines (52 loc) · 1.59 KB
/
outputshedulers.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//
// outputshedulers.hpp
// linkedCellMD
//
// Created by Matthias Sachs on 13/06/2018.
// Copyright © 2018 Matthias Sachs. All rights reserved.
//
#ifndef outputshedulers_hpp
#define outputshedulers_hpp
#include <stdio.h>
#include "grid.hpp"
class BufferedOutputSheduler : public OutputSheduler{
public:
std::vector<gsl_matrix*> outputTrajs;
void feed(long int t);
void addOutputTask(OutputTask *outputTask);
BufferedOutputSheduler(long int nsample_a,
int modprnt_a,
ParticleSystem *ps_a);
void h5write(std::string outputpath);
virtual void updateStats();
};
class BufferedOutputShedulerU : public BufferedOutputSheduler{
public:
BufferedOutputShedulerU(long int nsample_a,
int modprnt_a,
ParticleSystem *ps_a);
void updateStats();
};
/*
*/
class SingleVarOT : public OutputTask{
public:
double *variable;
SingleVarOT(ParticleSystem *ps, std::string variableName); // only used by subclasses
SingleVarOT(gsl_vector *data, ParticleSystem *ps, std::string variableName);
SingleVarOT(gsl_matrix *data, ParticleSystem *ps, std::string variableName_a);
virtual void comp_output(double *outputTraj);
};
class LaplaceOT : public SingleVarOT{
public:
double *variable;
LaplaceOT(ParticleSystem *ps);
void comp_output(double *outputTraj);
};
class ConfigTOutputTask : public OutputTask{
public:
ParticleSystem *ps;
ConfigTOutputTask(ParticleSystem *ps);
void comp_output(double *outputTraj);
};
#endif /* outputshedulers_hpp */