AnalyticGrid.hpp

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 } // namespace