⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plot.cpp

📁 利用C
💻 CPP
字号:
// Copyright (C) 2007 Anders Logg.// Licensed under the GNU LGPL Version 2.1.//// First added:  2007-05-02// Last changed: 2007-06-13#include <stdio.h>#include <stdlib.h>#include <dolfin/log/log.h>#include <dolfin/parameter/parameters.h>#include <dolfin/function/Function.h>#include <dolfin/mesh/Mesh.h>#include <dolfin/io/File.h>#include "plot.h"using namespace dolfin;namespace dolfin{  // Plotting of objects (functions and meshes)  template<class T> void plot(T& t, std::string class_name, std::string mode)  {    message("Plotting %s, press q to continue...", class_name.c_str());        // Open temporary script file    std::string script_name = std::string(tmpnam(0)) + ".py";    FILE* script_file = fopen(script_name.c_str(), "w");        // Save data to temporary file    std::string data_name = std::string(tmpnam(0)) + ".xml";    dolfin_set("output destination", "silent");    File file(data_name);    file << t;    dolfin_set("output destination", "terminal");        // Write script file    fprintf(script_file, "try:\n");    fprintf(script_file, "    from dolfin import *\n\n");    fprintf(script_file, "    object = %s(\"%s\")\n", class_name.c_str(), data_name.c_str());    if (mode == "")      fprintf(script_file, "    plot(object)\n");    else      fprintf(script_file, "    plot(object, mode=\"%s\")\n", mode.c_str());    fprintf(script_file, "    interactive()\n");    fprintf(script_file, "except:\n");    fprintf(script_file, "    import sys\n");    fprintf(script_file, "    sys.exit(1)\n");    fclose(script_file);        // Run script    std::string command = "python " + script_name + " > /dev/null";    if ( system(command.c_str()) != 0 )      message("Unable to plot (PyDOLFIN or Viper plotter not available).");  }  // Plotting of mesh functions  template<class T> void plot(MeshFunction<T>& f, std::string type, std::string mode)  {    message("Plotting MeshFunction, press q to continue...");        // Open temporary script file    std::string script_name = std::string(tmpnam(0)) + ".py";    FILE* script_file = fopen(script_name.c_str(), "w");        // Save data to temporary file    std::string data_name = std::string(tmpnam(0)) + ".xml";    dolfin_set("output destination", "silent");    File file(data_name);    file << f.mesh();    file << f;    dolfin_set("output destination", "terminal");        // Write script file    fprintf(script_file, "try:\n");    fprintf(script_file, "    from dolfin import *\n\n");    fprintf(script_file, "    mesh = Mesh(\"%s\")\n", data_name.c_str());    fprintf(script_file, "    f = MeshFunction(\"%s\", mesh, \"%s\")\n", type.c_str(), data_name.c_str());    if (mode == "")      fprintf(script_file, "    plot(f)\n");    else      fprintf(script_file, "    plot(f, mode=\"%s\")\n", mode.c_str());    fprintf(script_file, "    interactive()\n");    fprintf(script_file, "except:\n");    fprintf(script_file, "    import sys\n");    fprintf(script_file, "    sys.exit(1)\n");    fclose(script_file);        // Run script    std::string command = "python " + script_name; // + " > /dev/null";    if ( system(command.c_str()) != 0 )      message("Unable to plot (PyDOLFIN or Viper plotter not available).");  }}//-----------------------------------------------------------------------------void dolfin::plot(Function& f, std::string mode){  plot(f, "Function", mode);}//-----------------------------------------------------------------------------void dolfin::plot(Mesh& mesh, std::string mode){  plot(mesh, "Mesh", mode);}//-----------------------------------------------------------------------------void dolfin::plot(MeshFunction<uint>& f, std::string mode){  plot(f, "uint", mode);}//-----------------------------------------------------------------------------void dolfin::plot(MeshFunction<real>& f, std::string mode){  plot(f, "real", mode);}//-----------------------------------------------------------------------------void dolfin::plot(MeshFunction<bool>& f, std::string mode){  plot(f, "bool", mode);}//-----------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -