Changeset ac6d04 for test/interfaces


Ignore:
Timestamp:
Apr 10, 2012, 1:55:49 PM (14 years ago)
Author:
Julian Iseringhausen <isering@…>
Children:
a40eea
Parents:
d24c2f
Message:

Merge recent changes of the vmg library into ScaFaCos.

Includes a fix for the communication problems on Jugene.

git-svn-id: https://svn.version.fz-juelich.de/scafacos/trunk@1666 5161e1c8-67bf-11de-9fd5-51895aff932f

Location:
test/interfaces
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • test/interfaces/Makefile.am

    rd24c2f rac6d04  
    1 check_LIBRARIES = libinterfaces.a
     1check_LIBRARIES += libinterfaces.a
    22
    33libinterfaces_a_SOURCES = \
    4         interface_sinus.cpp \
    5         interface_sinus.hpp
     4        interfaces/interface_sinus.cpp \
     5        interfaces/interface_sinus.hpp
    66
    77libinterfaces_a_CPPFLAGS = -I $(top_srcdir)/src
  • test/interfaces/interface_sinus.cpp

    rd24c2f rac6d04  
    88#ifdef HAVE_CONFIG_H
    99#include <config.h>
    10 #endif
    11 
    12 #ifndef _USE_MATH_DEFINES
    13 #define _USE_MATH_DEFINES
    1410#endif
    1511
     
    2521using VMGInterfaces::InterfaceSinus;
    2622
    27 void InterfaceSinus::ImportRightHandSide(Multigrid& grid)
     23void InterfaceSinus::ImportRightHandSide(Multigrid& multigrid)
    2824{
    2925  Index i;
    3026  Vector pos;
    3127
    32   Grid& grid_l = grid(grid.GlobalMaxLevel());
     28  Grid& grid = multigrid(multigrid.MaxLevel());
     29  grid.ClearBoundary();
    3330
    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();
    3632
    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());
    5638      }
    5739}
  • test/interfaces/interface_sinus.hpp

    rd24c2f rac6d04  
    2323{
    2424public:
    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)
    2732  {}
    2833
    2934  virtual ~InterfaceSinus() {}
    3035
    31   void ImportRightHandSide(VMG::Multigrid& grid);
     36  void ImportRightHandSide(VMG::Multigrid& multigrid);
    3237  void ExportSolution(VMG::Grid& grid);
     38
     39private:
     40  vmg_float sine_factor;
    3341};
    3442
Note: See TracChangeset for help on using the changeset viewer.