escript Revision_
SystemMatrixPattern.h
Go to the documentation of this file.
1
2/*****************************************************************************
3*
4* Copyright (c) 2003-2020 by The University of Queensland
5* http://www.uq.edu.au
6*
7* Primary Business: Queensland, Australia
8* Licensed under the Apache License, version 2.0
9* http://www.apache.org/licenses/LICENSE-2.0
10*
11* Development until 2012 by Earth Systems Science Computational Center (ESSCC)
12* Development 2012-2013 by School of Earth Sciences
13* Development from 2014-2017 by Centre for Geoscience Computing (GeoComp)
14* Development from 2019 by School of Earth and Environmental Sciences
15**
16*****************************************************************************/
17
18
19/****************************************************************************/
20
21/* Paso: system matrix pattern */
22
23/****************************************************************************/
24
25/* Copyrights by ACcESS Australia 2004,2005 */
26/* Author: Lutz Gross, l.gross@uq.edu.au */
27
28/****************************************************************************/
29
30#ifndef __PASO_SYSTEMMATRIXPATTERN_H__
31#define __PASO_SYSTEMMATRIXPATTERN_H__
32
33#include "Coupler.h"
34#include "Pattern.h"
35
36#include <escript/Distribution.h>
37
38namespace paso {
39
40struct SystemMatrixPattern;
41typedef boost::shared_ptr<SystemMatrixPattern> SystemMatrixPattern_ptr;
42typedef boost::shared_ptr<const SystemMatrixPattern> const_SystemMatrixPattern_ptr;
43
44struct PASO_DLL_API SystemMatrixPattern : boost::enable_shared_from_this<SystemMatrixPattern>
45{
46 // constructor
47 SystemMatrixPattern(int type, escript::Distribution_ptr output_distribution,
48 escript::Distribution_ptr input_distribution, Pattern_ptr mainPattern,
49 Pattern_ptr col_couplePattern, Pattern_ptr row_couplePattern,
50 Connector_ptr col_connector, Connector_ptr row_connector);
51
53
54 inline index_t getNumOutput() const {
55 return mainPattern->numOutput;
56 }
57
58 SystemMatrixPattern_ptr unrollBlocks(int type, dim_t output_block_size,
59 dim_t input_block_size);
60
61 int type;
70};
71
72
73} // namespace paso
74
75#endif // __PASO_SYSTEMMATRIXPATTERN_H__
76
boost::shared_ptr< Distribution > Distribution_ptr
Definition Distribution.h:26
boost::shared_ptr< JMPI_ > JMPI
Definition EsysMPI.h:76
Definition BiCGStab.cpp:25
boost::shared_ptr< SystemMatrixPattern > SystemMatrixPattern_ptr
Definition SystemMatrixPattern.h:41
boost::shared_ptr< Pattern > Pattern_ptr
Definition Pattern.h:40
boost::shared_ptr< const SystemMatrixPattern > const_SystemMatrixPattern_ptr
Definition SystemMatrixPattern.h:42
boost::shared_ptr< Connector > Connector_ptr
Definition Coupler.h:39
#define PASO_DLL_API
Definition paso/src/system_dep.h:29
Definition SystemMatrixPattern.h:45
index_t getNumOutput() const
Definition SystemMatrixPattern.h:54
~SystemMatrixPattern()
Definition SystemMatrixPattern.h:52
Pattern_ptr row_couplePattern
Definition SystemMatrixPattern.h:65
Pattern_ptr mainPattern
Definition SystemMatrixPattern.h:63
escript::Distribution_ptr output_distribution
Definition SystemMatrixPattern.h:68
Pattern_ptr col_couplePattern
Definition SystemMatrixPattern.h:64
Connector_ptr col_connector
Definition SystemMatrixPattern.h:66
int type
Definition SystemMatrixPattern.h:61
Connector_ptr row_connector
Definition SystemMatrixPattern.h:67
escript::JMPI mpi_info
Definition SystemMatrixPattern.h:62
escript::Distribution_ptr input_distribution
Definition SystemMatrixPattern.h:69