source: test/interfaces/interface_sinus.cpp@ d24c2f

Last change on this file since d24c2f was dfed1c, checked in by Julian Iseringhausen <isering@…>, 14 years ago

Major vmg update.

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

  • Property mode set to 100644
File size: 1.5 KB
RevLine 
[48b662]1/*
2 * interface_sinus.cpp
3 *
4 * Created on: 31.03.2011
5 * Author: Julian Iseringhausen
6 */
7
8#ifdef HAVE_CONFIG_H
9#include <config.h>
10#endif
11
12#ifndef _USE_MATH_DEFINES
13#define _USE_MATH_DEFINES
14#endif
15
16#include <cmath>
[dfed1c]17#include <iostream>
[48b662]18
19#include "grid/grid.hpp"
20#include "grid/multigrid.hpp"
21
22#include "interface_sinus.hpp"
23
24using namespace VMG;
25using VMGInterfaces::InterfaceSinus;
26
27void InterfaceSinus::ImportRightHandSide(Multigrid& grid)
28{
29 Index i;
30 Vector pos;
31
32 Grid& grid_l = grid(grid.GlobalMaxLevel());
33
34 const double& sp = grid_l.MeshWidth();
35 const double factor = 2.0 * M_PI * grid_l.Extent().Size().Max();
36
[dfed1c]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
[48b662]46 grid_l.ClearBoundary();
47
[dfed1c]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()) {
[48b662]51
[dfed1c]52 pos = grid_l.Extent().Begin() + sp * static_cast<Vector>(begin_local + i);
[48b662]53
54 grid_l(i) = 3.0 * factor * factor * sin(factor * pos.X()) * sin(factor * pos.Y()) * sin(factor * pos.Z());
55
56 }
57}
58
59void InterfaceSinus::ExportSolution(Grid& grid)
60{
61}
Note: See TracBrowser for help on using the repository browser.