// Copyright (c) 2010-2023, Lawrence Livermore National Security, LLC. Produced // at the Lawrence Livermore National Laboratory. All Rights reserved. See files // LICENSE and NOTICE for details. LLNL-CODE-806117. // // This file is part of the MFEM library. For more information and source code // availability visit https://mfem.org. // // MFEM is free software; you can redistribute it and/or modify it under the // terms of the BSD-3 license. We welcome feedback and contributions, see file // CONTRIBUTING.md for details. #include "fem_extras.hpp" using namespace std; namespace mfem { namespace common { H1_FESpace::H1_FESpace(Mesh *m, const int p, const int space_dim, const int type, int vdim, int order) : FiniteElementSpace(m, new H1_FECollection(p,space_dim,type),vdim,order) { FEC_ = this->FiniteElementSpace::fec; } H1_FESpace::~H1_FESpace() { delete FEC_; } ND_FESpace::ND_FESpace(Mesh *m, const int p, const int space_dim, int vdim, int order) : FiniteElementSpace(m, new ND_FECollection(p,space_dim),vdim,order) { FEC_ = this->FiniteElementSpace::fec; } ND_FESpace::~ND_FESpace() { delete FEC_; } RT_FESpace::RT_FESpace(Mesh *m, const int p, const int space_dim, int vdim, int order) : FiniteElementSpace(m, new RT_FECollection(p-1,space_dim),vdim,order) { FEC_ = this->FiniteElementSpace::fec; } RT_FESpace::~RT_FESpace() { delete FEC_; } void VisualizeMesh(socketstream &sock, const char *vishost, int visport, Mesh &mesh, const char *title, int x, int y, int w, int h, const char * keys) { bool newly_opened = false; int connection_failed; do { if (!sock.is_open() || !sock) { sock.open(vishost, visport); sock.precision(8); newly_opened = true; } sock << "mesh\n"; mesh.Print(sock); if (newly_opened) { sock << "window_title '" << title << "'\n" << "window_geometry " << x << " " << y << " " << w << " " << h << "\n"; if ( keys ) { sock << "keys " << keys << "\n"; } sock << endl; } connection_failed = !sock && !newly_opened; } while (connection_failed); } void VisualizeField(socketstream &sock, const char *vishost, int visport, GridFunction &gf, const char *title, int x, int y, int w, int h, const char * keys, bool vec) { Mesh &mesh = *gf.FESpace()->GetMesh(); bool newly_opened = false; int connection_failed; do { if (!sock.is_open() || !sock) { sock.open(vishost, visport); sock.precision(8); newly_opened = true; } sock << "solution\n"; mesh.Print(sock); gf.Save(sock); if (newly_opened) { sock << "window_title '" << title << "'\n" << "window_geometry " << x << " " << y << " " << w << " " << h << "\n"; if ( keys ) { sock << "keys " << keys << "\n"; } else { sock << "keys maaAc\n"; } if ( vec ) { sock << "vvv"; } sock << endl; } connection_failed = !sock && !newly_opened; } while (connection_failed); } } // namespace common } // namespace mfem