Skip to content

Instantly share code, notes, and snippets.

View jwpeterson's full-sized avatar

John W. Peterson jwpeterson

View GitHub Profile
// An FEM formulation for solving the Jeffery-Hamel ODE:
// f''' + 2 * alpha * Re * f * f' + 4 * alpha^2 * f' = 0
// using C1 Hermite cubic and quartic finite elements.
// Libmesh includes
#include "libmesh/mesh.h"
#include "libmesh/elem.h"
#include "libmesh/mesh_generation.h"
#include "libmesh/equation_systems.h"
#include "libmesh/linear_implicit_system.h"
@jwpeterson
jwpeterson / noncopyable.C
Last active November 2, 2024 05:52
Demonstrate usage of noncopyable class in std containers
// Compilation requires -std=c++17
// http://stackoverflow.com/questions/17603666/copy-move-requirements-for-the-key-value-types-in-a-stdmap
#include <map>
#include <vector>
struct foo
{
int i;
foo(int j) : i(j) {}
// C++ include files that we need
#include <iostream>
// Basic include files needed for the mesh functionality.
#include "libmesh/libmesh.h"
#include "libmesh/mesh.h"
#include "libmesh/mesh_generation.h"
#include "libmesh/linear_implicit_system.h"
#include "libmesh/equation_systems.h"
#include "libmesh/exodusII_io.h"
@jwpeterson
jwpeterson / default_destructor.C
Created June 6, 2018 20:04
Defaulted destructors inhibit move constructor generation
#include <iostream>
#include <vector>
struct S
{
S(const S&) { std::cout << "Copied an S\n"; }
S(S&&) { std::cout << "Moved an S\n"; }
S() = default;
#include "libmesh/node.h"
#include "libmesh/elem.h"
#include "libmesh/mesh.h"
#include "libmesh/face_tri3.h"
#include "libmesh/getpot.h"
using namespace libMesh;
// Commands to approximately generate the Bassi & Rebay meshes:
// In my opinion, the meshes look best when nodes_per_ring = 2 * num_rings
#include "libmesh/mesh_generation.h"
#include "libmesh/mesh.h"
#include "libmesh/elem.h"
#include "libmesh/getpot.h"
#include "libmesh/string_to_enum.h"
#include "libmesh/elem_range.h"
// C++ includes
#include <chrono>
#!/usr/bin/env python
import sys
import os
name = ''
# Process command line args (0 is always the script name)
c = 1
while (c < len(sys.argv)):
@jwpeterson
jwpeterson / type_tensor_ABC_performance.cc
Created December 19, 2020 05:59
Comparison of matrix-matrix-matrix product for RealTensorValue, DenseMatrix, and Eigen::Matrix3d
// Basic include file needed for the mesh functionality.
#include "libmesh/libmesh.h"
#include "libmesh/mesh.h"
#include "libmesh/dof_map.h"
#include "libmesh/elem.h"
#include "libmesh/fe_interface.h"
#include "libmesh/fe_map.h"
#include "libmesh/fe_base.h"
#include "libmesh/quadrature_gauss.h"
#include "libmesh/enum_to_string.h"
@jwpeterson
jwpeterson / type_tensor_axpy_performance.cc
Created December 19, 2020 06:00
Comparison of A*x + y for RealTensorValue, DenseMatrix, and Eigen::Matrix3d
// Basic include file needed for the mesh functionality.
#include "libmesh/libmesh.h"
#include "libmesh/mesh.h"
#include "libmesh/dof_map.h"
#include "libmesh/elem.h"
#include "libmesh/fe_interface.h"
#include "libmesh/fe_map.h"
#include "libmesh/fe_base.h"
#include "libmesh/quadrature_gauss.h"
#include "libmesh/enum_to_string.h"
// libmesh includes
#include "libmesh/libmesh.h"
#include "libmesh/mesh.h"
#include "libmesh/elem.h"
#include "libmesh/fe.h"
#include "libmesh/quadrature_gauss.h"
#include "libmesh/dense_vector.h"
#include "libmesh/dense_matrix.h"
using namespace libMesh;