MFEM v2.0
|
00001 // Copyright (c) 2010, Lawrence Livermore National Security, LLC. Produced at 00002 // the Lawrence Livermore National Laboratory. LLNL-CODE-443211. All Rights 00003 // reserved. See file COPYRIGHT for details. 00004 // 00005 // This file is part of the MFEM library. For more information and source code 00006 // availability see http://mfem.googlecode.com. 00007 // 00008 // MFEM is free software; you can redistribute it and/or modify it under the 00009 // terms of the GNU Lesser General Public License (as published by the Free 00010 // Software Foundation) version 2.1 dated February 1999. 00011 00012 #ifndef MFEM_LINEARFORM 00013 #define MFEM_LINEARFORM 00014 00016 class LinearForm : public Vector 00017 { 00018 private: 00020 FiniteElementSpace * fes; 00021 00023 Array<LinearFormIntegrator*> dlfi; 00024 00026 Array<LinearFormIntegrator*> blfi; 00027 00029 Array<LinearFormIntegrator*> flfi; 00030 00031 public: 00033 LinearForm (FiniteElementSpace * f) : Vector (f -> GetVSize()) 00034 { fes = f; }; 00035 00036 FiniteElementSpace * GetFES() { return fes; }; 00037 00039 void AddDomainIntegrator (LinearFormIntegrator * lfi); 00040 00042 void AddBoundaryIntegrator (LinearFormIntegrator * lfi); 00043 00045 void AddBdrFaceIntegrator (LinearFormIntegrator * lfi); 00046 00048 void Assemble(); 00049 00050 void Update() { SetSize(fes -> GetVSize()); }; 00051 00052 void Update(FiniteElementSpace * f) { fes = f; SetSize(f -> GetVSize()); }; 00053 00055 ~LinearForm(); 00056 }; 00057 00058 #endif