escript Revision_
finley/src/Util.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
19
20#ifndef __FINLEY_UTIL_H__
21#define __FINLEY_UTIL_H__
22
23#include "Finley.h"
24
25#include <escript/Data.h>
26
27namespace finley {
28namespace util {
29
30typedef std::pair<index_t,index_t> IndexPair;
31typedef std::vector<IndexPair> ValueAndIndexList;
32
35
44
47void gather(int len, const index_t* index, int numData, const double* in,
48 double* out);
49
53template<typename Scalar>
54void addScatter(int len, const index_t* index, int numData,
55 const Scalar* in, Scalar* out, index_t upperBound);
56
58void smallMatMult(int A1, int A2, double* A, int B2,
59 const std::vector<double>& B,
60 const std::vector<double>& C);
61
64template<typename Scalar>
65void smallMatSetMult1(int len, int A1, int A2, Scalar* A, int B2,
66 const std::vector<Scalar>& B,
67 const std::vector<double>& C);
68
69void invertSmallMat(int len, int dim, const double* A, double *invA,
70 double* det);
71
74void normalVector(int len, int dim, int dim1, const double* A, double* Normal);
75
76index_t getMinInt(int dim, dim_t N, const index_t* values);
77
78index_t getMaxInt(int dim, dim_t N, const index_t* values);
79
82IndexPair getMinMaxInt(int dim, dim_t N, const index_t* values);
83
86IndexPair getFlaggedMinMaxInt(dim_t N, const index_t* values, index_t ignore);
87
90std::vector<index_t> packMask(const std::vector<short>& mask);
91
92void setValuesInUse(const int* values, dim_t numValues,
93 std::vector<int>& valuesInUse, escript::JMPI mpiInfo);
94
95} // namespace util
96} // namespace finley
97
98#endif // __FINLEY_UTIL_H__
99
#define FINLEY_REDUCED_CONTACT_ELEMENTS_1
Definition Finley.h:58
#define FINLEY_REDUCED_ELEMENTS
Definition Finley.h:56
#define FINLEY_REDUCED_FACE_ELEMENTS
Definition Finley.h:57
#define FINLEY_REDUCED_CONTACT_ELEMENTS_2
Definition Finley.h:59
Data represents a collection of datapoints.
Definition Data.h:64
const FunctionSpace & getFunctionSpace() const
Return the function space.
Definition Data.h:463
int getTypeCode() const
Returns the function space type code.
Definition FunctionSpace.cpp:95
boost::shared_ptr< JMPI_ > JMPI
Definition EsysMPI.h:76
std::vector< IndexPair > ValueAndIndexList
Definition finley/src/Util.h:31
index_t getMinInt(int dim, dim_t N, const index_t *values)
calculates the minimum value from a dim X N integer array
Definition finley/src/Util.cpp:237
IndexPair getFlaggedMinMaxInt(dim_t N, const index_t *values, index_t ignore)
Definition finley/src/Util.cpp:305
void smallMatMult(int A1, int A2, double *A, int B2, const std::vector< double > &B, const std::vector< double > &C)
multiplies two matrices: A(1:A1,1:A2) := B(1:A1,1:B2)*C(1:B2,1:A2)
Definition finley/src/Util.cpp:74
bool hasReducedIntegrationOrder(const escript::Data &in)
returns true if the data object is defined on reduced element types
Definition finley/src/Util.h:37
void invertSmallMat(int len, int dim, const double *A, double *invA, double *det)
Definition finley/src/Util.cpp:116
index_t getMaxInt(int dim, dim_t N, const index_t *values)
calculates the maximum value from a dim X N integer array
Definition finley/src/Util.cpp:258
void gather(int len, const index_t *index, int numData, const double *in, double *out)
Definition finley/src/Util.cpp:44
std::pair< index_t, index_t > IndexPair
Definition finley/src/Util.h:30
IndexPair getMinMaxInt(int dim, dim_t N, const index_t *values)
Definition finley/src/Util.cpp:278
void setValuesInUse(const int *values, dim_t numValues, std::vector< int > &valuesInUse, escript::JMPI mpiinfo)
Definition finley/src/Util.cpp:343
void addScatter(int len, const index_t *index, int numData, const Scalar *in, Scalar *out, index_t upperBound)
Definition finley/src/Util.cpp:55
void sortValueAndIndex(ValueAndIndexList &array)
orders a ValueAndIndexList by value.
Definition finley/src/Util.cpp:39
std::vector< index_t > packMask(const std::vector< short > &mask)
Definition finley/src/Util.cpp:332
void smallMatSetMult1(int len, int A1, int A2, Scalar *A, int B2, const std::vector< Scalar > &B, const std::vector< real_t > &C)
Definition finley/src/Util.cpp:89
void normalVector(int len, int dim, int dim1, const double *A, double *Normal)
Definition finley/src/Util.cpp:187
A suite of factory methods for creating various finley domains.
Definition finley/src/Assemble.h:32