Changeset ac6d04 for test/interfaces/interface_sinus.cpp
- Timestamp:
- Apr 10, 2012, 1:55:49 PM (14 years ago)
- Children:
- a40eea
- Parents:
- d24c2f
- File:
-
- 1 edited
-
test/interfaces/interface_sinus.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
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 }
Note:
See TracChangeset
for help on using the changeset viewer.
