00001 #include <ocean/plankton/VCreator.hpp>
00002 #include <ocean/plankton/VTime.hpp>
00003 #include <ocean/plankton/VThread.hpp>
00004 #include <ocean/eagle/PhysicalSpace.hpp>
00005
00006 #include <ocean/shrimp/VInfo.hpp>
00007 #include <ocean/shrimp/Range.hpp>
00008
00009 #include <ocean/shrimp/TimeDependent.hpp>
00010
00011 #include <bundle/Bundle.hpp>
00012 #include <grid/CartesianChart.hpp>
00013 #include <field/DirectProductArray.hpp>
00014
00015 #include <bone/BundleInput.hpp>
00016 #include <bone/FishSlice.hpp>
00017 #include <bone/FishField.hpp>
00018 #include <bone/GridObject.hpp>
00019
00020 #include <field/DirectProductArrayTypes.hpp>
00021 #include "AnalyticCreator.hpp"
00022
00023 namespace Wizt
00024 {
00025
00026 using namespace Wizt;
00027 using namespace Fiber;
00028 using namespace Eagle;
00029 using namespace Eagle::PhysicalSpace;
00030
00045 class AnalyticGrid : public VObject, public VCotask
00046 {
00047 public:
00048 VOutput<BundlePtr> myBundle;
00049
00050 TypedSlot<int> TimeSteps;
00051 TypedSlot<double> TMax;
00052
00053 TypedSlot<int> GridSizeXY,
00054 GridSizeZ;
00055
00056 TypedSlot<double> Zstretch;
00057 double BBoxSize;
00058
00059 string gridname;
00060
00061
00062 AnalyticGrid(const string&name, int p, const RefPtr<VCreationPreferences>&VP);
00063
00064 ~AnalyticGrid();
00065
00066 virtual void CreateFields(VRequest&Context, double time, Grid&G, double precision) = 0;
00067
00068 override bool update(VRequest&Context, double precision);
00069
00070 };
00071
00072 }