Changeset ac6d04 for test/interfaces
- Timestamp:
- Apr 10, 2012, 1:55:49 PM (14 years ago)
- Children:
- a40eea
- Parents:
- d24c2f
- Location:
- test/interfaces
- Files:
-
- 3 edited
-
Makefile.am (modified) (1 diff)
-
interface_sinus.cpp (modified) (2 diffs)
-
interface_sinus.hpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
test/interfaces/Makefile.am
rd24c2f rac6d04 1 check_LIBRARIES = libinterfaces.a1 check_LIBRARIES += libinterfaces.a 2 2 3 3 libinterfaces_a_SOURCES = \ 4 interface _sinus.cpp \5 interface _sinus.hpp4 interfaces/interface_sinus.cpp \ 5 interfaces/interface_sinus.hpp 6 6 7 7 libinterfaces_a_CPPFLAGS = -I $(top_srcdir)/src -
test/interfaces/interface_sinus.cpp
rd24c2f rac6d04 8 8 #ifdef HAVE_CONFIG_H 9 9 #include <config.h> 10 #endif11 12 #ifndef _USE_MATH_DEFINES13 #define _USE_MATH_DEFINES14 10 #endif 15 11 … … 25 21 using VMGInterfaces::InterfaceSinus; 26 22 27 void InterfaceSinus::ImportRightHandSide(Multigrid& grid)23 void InterfaceSinus::ImportRightHandSide(Multigrid& multigrid) 28 24 { 29 25 Index i; 30 26 Vector pos; 31 27 32 Grid& grid_l = grid(grid.GlobalMaxLevel()); 28 Grid& grid = multigrid(multigrid.MaxLevel()); 29 grid.ClearBoundary(); 33 30 34 const double& sp = grid_l.MeshWidth(); 35 const double factor = 2.0 * M_PI * grid_l.Extent().Size().Max(); 31 const Index begin_local = grid.Global().LocalBegin() - grid.Local().HaloSize1(); 36 32 37 Index begin, end, begin_local; 38 39 for (int j=0; j<3; ++j) { 40 41 begin[j] = (grid_l.Local().HaloEnd1()[j] - grid_l.Local().HaloBegin1()[j] > 0 ? grid_l.Local().Begin()[j] : 0); 42 end[j] = (grid_l.Local().HaloEnd2()[j] - grid_l.Local().HaloBegin2()[j] > 0 ? grid_l.Local().End()[j] : grid_l.Local().SizeTotal()[j]); 43 begin_local[j] = grid_l.Global().BeginLocal()[j] - (grid_l.Local().HaloEnd1()[j] - grid_l.Local().HaloBegin1()[j] > 0 ? 1 : 0); 44 } 45 46 grid_l.ClearBoundary(); 47 48 for (i.X()=begin.X(); i.X()<end.X(); ++i.X()) 49 for (i.Y()=begin.Y(); i.Y()<end.Y(); ++i.Y()) 50 for (i.Z()=begin.Z(); i.Z()<end.Z(); ++i.Z()) { 51 52 pos = grid_l.Extent().Begin() + sp * static_cast<Vector>(begin_local + i); 53 54 grid_l(i) = 3.0 * factor * factor * sin(factor * pos.X()) * sin(factor * pos.Y()) * sin(factor * pos.Z()); 55 33 for (i.X()=grid.Local().Begin().X(); i.X()<grid.Local().End().X(); ++i.X()) 34 for (i.Y()=grid.Local().Begin().Y(); i.Y()<grid.Local().End().Y(); ++i.Y()) 35 for (i.Z()=grid.Local().Begin().Z(); i.Z()<grid.Local().End().Z(); ++i.Z()) { 36 pos = grid.Extent().MeshWidth() * static_cast<Vector>(begin_local + i); 37 grid(i) = 3.0 * sine_factor * sine_factor * std::sin(sine_factor * pos.X()) * std::sin(sine_factor * pos.Y()) * std::sin(sine_factor * pos.Z()); 56 38 } 57 39 } -
test/interfaces/interface_sinus.hpp
rd24c2f rac6d04 23 23 { 24 24 public: 25 InterfaceSinus(VMG::Boundary boundary, int levelMin, int levelMax, vmg_float box_begin, vmg_float box_end, int coarseningSteps=0, double alpha=1.6) : 26 VMG::Interface(boundary, levelMin, levelMax, box_begin, box_end, coarseningSteps, alpha) 25 InterfaceSinus(vmg_float sine_factor, 26 VMG::Boundary boundary, int levelMin, int levelMax, 27 vmg_float box_begin, vmg_float box_end, 28 int coarseningSteps=0, double alpha=1.6) : 29 VMG::Interface(boundary, levelMin, levelMax, 30 box_begin, box_end, coarseningSteps, alpha), 31 sine_factor(sine_factor) 27 32 {} 28 33 29 34 virtual ~InterfaceSinus() {} 30 35 31 void ImportRightHandSide(VMG::Multigrid& grid);36 void ImportRightHandSide(VMG::Multigrid& multigrid); 32 37 void ExportSolution(VMG::Grid& grid); 38 39 private: 40 vmg_float sine_factor; 33 41 }; 34 42
Note:
See TracChangeset
for help on using the changeset viewer.
