openEMS/FDTD/processfields.h
Thorsten Liebig f73bf210ed new ProcessingArray; Processing returns next interval for process()
Processing now uses a timestep interval in which Process() will do it's work
and returns the next interval it doesn't need another Process() call

all Processing routines can be put into these array
and it will take care of calling Process() at the right time
2010-03-10 12:15:14 +01:00

48 lines
1.4 KiB
C++

#ifndef PROCESSFIELDS_H
#define PROCESSFIELDS_H
#include "processing.h"
#include "../tools/array_ops.h"
class ProcessFields : public Processing
{
public:
virtual ~ProcessFields();
virtual void DefineStartStopCoord(double* dstart, double* dstop);
// virtual void SetSubSampling(unsigned int subSampleRate, int dir=-1);
//! Used file pattern e.g. pattern="tmp/efield_" --> "tmp/efield_000045.vtk" for timestep 45 or "tmp/efield_2.40000e9.vtk" for 2.4GHz E-field dump.
void SetFilePattern(string fp) {filePattern=fp;}
//! Define the Dump-Mode
void SetDumpMode(int mode) {DumpMode=mode;}
//! This methode will dump all fields in the center of a main cell (dual-node) using 4 E-field and 2 H-fields per direction. (default)
void SetDumpMode2Cell() {DumpMode=2;}
//! Set dump type: 0 for E-fields, 1 for H-fields, 2 for D-fields, 3 for B-fields, 4 for J-fields, etc...
void SetDumpType(int type) {DumpType=type;}
// virtual void Process();
protected:
ProcessFields(Operator* op, Engine* eng);
static bool DumpFieldArray2VTK(ofstream &file, string name, FDTD_FLOAT**** array, double** discLines, unsigned int* numLines);
int DumpMode;
int DumpType;
string filePattern;
// unsigned int subSample[3];
//! dump mesh
unsigned int numLines[3];
double* discLines[3];
//! dual dump mesh
unsigned int numDLines[3];
double* discDLines[3];
};
#endif // PROCESSFIELDS_H