1 /****************************************************************************** 2 * Copyright 1998-2019 Lawrence Livermore National Security, LLC and other 3 * HYPRE Project Developers. See the top-level COPYRIGHT file for details. 4 * 5 * SPDX-License-Identifier: (Apache-2.0 OR MIT) 6 ******************************************************************************/ 7 8 #ifndef __MLISFEI_H__ 9 #define __MLISFEI_H__ 10 11 #include "_hypre_utilities.h" 12 #include "mli_febase.h" 13 14 /****************************************************************************/ 15 /* data structures for Finite element grid information */ 16 /*--------------------------------------------------------------------------*/ 17 18 class MLI_SFEI : public MLI_FEBase 19 { 20 MPI_Comm mpiComm_; 21 int outputLevel_; 22 int nElemBlocks_; 23 int maxElemBlocks_; 24 int *blkNumElems_; 25 int *blkElemNEqns_; 26 int *blkNodeDofs_; 27 int ***blkElemEqnLists_; 28 double ***blkElemStiffness_; 29 int blkIDBase_; 30 31 public : 32 33 MLI_SFEI(MPI_Comm comm); 34 35 ~MLI_SFEI(); 36 37 int setOutputLevel(int level); 38 39 int freeStiffnessMatrices(); 40 41 int addNumElems(int elemBlk, int nElems, int nNodesPerElem); 42 43 int loadElemBlock(int elemBlk, int nElems, const int* elemIDs, 44 const double *const *const *stiff, 45 int nEqnsPerElem, const int *const * eqnIndices); 46 getNumElemBlocks()47 int getNumElemBlocks() {return nElemBlocks_;} 48 int getBlockNumElems(int iD); 49 int getBlockElemNEqns(int iD); 50 int **getBlockElemEqnLists(int iD); 51 double **getBlockElemStiffness(int iD); 52 }; 53 54 #endif 55 56