OpendTect  6.3
volprocchainexec.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: K. Tingdahl
8  Date: October 2006
9 ________________________________________________________________________
10 
11 
12 -*/
13 
14 #include "volumeprocessingmod.h"
15 #include "volprocchain.h"
16 #include "executor.h"
17 
18 
19 namespace VolProc
20 {
21 
24 mExpClass(VolumeProcessing) ChainExecutor : public Executor
26 public:
28  ~ChainExecutor();
29 
30  bool setCalculationScope(const TrcKeySampling&,
31  const StepInterval<int>&);
32  od_int64 computeMaximumMemoryUsage(const TrcKeySampling&,
33  const StepInterval<int>&);
34  bool areSamplesIndependent() const;
35  bool needsFullVolume() const;
36 
37  const RegularSeisDataPack* getOutput() const;
38  RegularSeisDataPack* getOutput();
39  uiString errMsg() const;
40 
41  virtual int nextStep();
42  virtual od_int64 nrDone() const;
43  virtual od_int64 totalNr() const;
44  virtual uiString message() const;
45  virtual uiString nrDoneText() const;
46  virtual void controlWork(Control);
47 
48  static uiString sGetStepErrMsg();
49 
50 private:
51 
52  class Epoch
53  {
54  public:
55  Epoch(const ChainExecutor&);
56  ~Epoch() { delete &taskgroup_; }
57 
58  void addStep(Step* s) { steps_ += s; }
59  const ObjectSet<Step>& getSteps() const { return steps_; }
60 
61  bool updateInputs();
62  bool doPrepare(ProgressMeter* progmeter=0);
63  void releaseData();
64  Task& getTask() { return taskgroup_; }
65 
66  bool needsStepOutput(Step::ID) const;
67  RegularSeisDataPack* getOutput() const;
68 
69  private:
70 
75 
76  };
77 
78  bool scheduleWork();
79  void releaseMemory();
80  int computeLatestEpoch(Step::ID) const;
81  void computeComputationScope(Step::ID stepid,
82  TrcKeySampling& stepoutputhrg,
83  StepInterval<int>& stepoutputzrg ) const;
84  Step::ID getChainOutputStepID() const;
85  Step::OutputSlotID getChainOutputSlotID() const;
86 
87 
89  bool isok_;
93  mutable uiString errmsg_;
98 
100 
101 };
102 
103 } // namespace VolProc
#define mExpClass(module)
Definition: commondefs.h:157
Definition: volprocchainexec.h:52
int totalnrepochs_
Definition: volprocchainexec.h:97
is an interface where processes can report their progress.
Definition: progressmeter.h:19
ObjectSet< Epoch > epochs_
Definition: volprocchainexec.h:95
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
Epoch * curepoch_
Definition: volprocchainexec.h:88
#define od_int64
Definition: plftypes.h:34
VolumeDataPack for 2D and 3D seismic data.
Definition: seisdatapack.h:42
Definition: uistring.h:88
Definition: volprocchain.h:56
void addStep(Step *s)
Definition: volprocchainexec.h:58
A collection of tasks, that behave as a single task.
Definition: task.h:108
Set of pointers to objects.
Definition: commontypes.h:28
BufferString errmsg_
Definition: volprocchainexec.h:71
void message(const char *)
default: to stderr
Chain::Web web_
Definition: volprocchainexec.h:96
Chain & chain_
Definition: volprocchainexec.h:90
A chain of Steps that can be applied to a volume of scalars.
Definition: volprocchain.h:27
Horizontal sampling (inline and crossline range and steps).
Definition: trckeysampling.h:25
Adapter for a VolProc chain to external attribute calculation.
Definition: velocitygridder.h:29
Control
Definition: task.h:45
const ObjectSet< Step > & getSteps() const
Definition: volprocchainexec.h:59
int OutputSlotID
Definition: volprocstep.h:47
int ID
Definition: volprocstep.h:45
~Epoch()
Definition: volprocchainexec.h:56
ObjectSet< Step > steps_
Definition: volprocchainexec.h:74
executes the work for a single VolProc::Chain.
Definition: volprocchainexec.h:24
An algorithm/calculation/transformation that takes one scalar volume as input, processes it...
Definition: volprocstep.h:39
bool isok_
Definition: volprocchainexec.h:89
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
RefMan< RegularSeisDataPack > outputdp_
Definition: volprocchainexec.h:99
StepInterval< int > outputzrg_
Definition: volprocchainexec.h:92
Task & getTask()
Definition: volprocchainexec.h:64
const char * errMsg() const
Definition: horizontracker.h:59
uiString errmsg_
Definition: volprocchainexec.h:93
ObjectSet< Step > scheduledsteps_
Definition: volprocchainexec.h:94
TrcKeySampling outputhrg_
Definition: volprocchainexec.h:91
Generalization of something (e.g. a computation) that needs to be done in multiple steps...
Definition: task.h:26
const ChainExecutor & chainexec_
Definition: volprocchainexec.h:72
Specification to enable chunkwise execution of a process.
Definition: executor.h:38
TaskGroup & taskgroup_
Definition: volprocchainexec.h:73

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B. V. 2017