Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions apps/2_3DGrid/2_3DGrid.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -95,11 +95,13 @@ int main(int argc, char* argv[]) {
}

monad::Hex8Grid grid({nx, ny, nz}, {lx, ly, lz});
grid.setDensitiesRandom(seed);

monad::DensityField3d densityField({nx, ny, nz});
densityField.setRandom(static_cast<unsigned int>(seed));

const auto file = std::filesystem::path(__FILE__).parent_path() / "output.msh";

monad::saveGrid(grid, file.string(), true);
monad::saveGridAndDensityField(grid, densityField, file.string());

std::cout << "Saved to " + file.string() << std::endl;

Expand Down
4 changes: 2 additions & 2 deletions apps/3_DensityFunction/3_DensityFunction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,11 @@ int main() {
return (xComponent + yComponent + zComponent) / 3;
};

grid.setDensitiesFunction(f);
const auto densityField = monad::makeDensityFieldFromFunction(grid, f);

const auto file = std::filesystem::path(__FILE__).parent_path() / "output.msh";

monad::saveGrid(grid, file.string(), true);
monad::saveGridAndDensityField(grid, densityField, file.string());

std::cout << "Saved to " + file.string() << std::endl;

Expand Down
14 changes: 7 additions & 7 deletions apps/4_LinearElasticity/4_LinearElasticity.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -70,32 +70,32 @@ int main(int argc, char* argv[]) {
const auto folder = std::filesystem::path(__FILE__).parent_path();
const auto csvFile = folder / "data.csv";

grid.setDensitiesFile(csvFile.string());
const auto densityField = monad::makeDensityFieldFromCsv(csvFile);

monad::SolverOptions options;
options.fields = monad::FieldSave::All;

const monad::LinearElasticSolver solver(grid, material);
const monad::LinearElasticSolver<monad::Quad8Grid> solver;

const auto results = solver.solve(options);
const auto results = solver.solve(grid, densityField, material, options);

std::cout << "---Homogenized stiffness tensor---\n" << results.CBar << std::endl;

auto file = folder / "density.msh";

monad::saveGrid(grid, file.string(), true);
monad::saveGridAndDensityField(grid, densityField, file.string());

file = folder / "uMacro.msh";

monad::saveGridAndField(grid, results.uMacro[0], file.string(), "Macro displacement");
monad::saveGridAndNodalField(grid, results.uMacro[0], file.string(), "Macro displacement");

file = folder / "uMicro.msh";

monad::saveGridAndField(grid, results.uMicro[0], file.string(), "Micro displacement");
monad::saveGridAndNodalField(grid, results.uMicro[0], file.string(), "Micro displacement");

file = folder / "u.msh";

monad::saveGridAndField(grid, results.u[0], file.string(), "Displacement");
monad::saveGridAndNodalField(grid, results.u[0], file.string(), "Displacement");

std::cout << "Saved to " + file.string() << std::endl;

Expand Down
16 changes: 8 additions & 8 deletions apps/5_LinearDielectric/5_LinearDielectric.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,37 +60,37 @@ int main(int argc, char* argv[]) {
const auto folder = std::filesystem::path(__FILE__).parent_path();
const auto csvFile = folder / "data.csv";

grid.setDensitiesFile(csvFile.string());
const auto densityField = monad::makeDensityFieldFromCsv(csvFile);

monad::SolverOptions options;
options.fields = monad::FieldSave::All;

const monad::LinearDielectricSolver solver(grid, material);
const monad::LinearDielectricSolver<monad::Quad8Grid> solver;

// Results follow the generic transport naming:
// results.KBar → ε̄
// results.KBar → ϵ̄
// results.phiMacro → φ̄
// results.phiMicro → φ̃
// results.phi → φ
const auto results = solver.solve(options);
const auto results = solver.solve(grid, densityField, material, options);

std::cout << "---Homogenized permittivity tensor---\n" << results.KBar << std::endl;

auto file = folder / "density.msh";

monad::saveGrid(grid, file.string(), true);
monad::saveGridAndDensityField(grid, densityField, file.string());

file = folder / "phiMacro.msh";

monad::saveGridAndField(grid, results.phiMacro[0], file.string(), "Macro electric potential");
monad::saveGridAndNodalField(grid, results.phiMacro[0], file.string(), "Macro electric potential");

file = folder / "phiMicro.msh";

monad::saveGridAndField(grid, results.phiMicro[0], file.string(), "Micro electric potential");
monad::saveGridAndNodalField(grid, results.phiMicro[0], file.string(), "Micro electric potential");

file = folder / "phi.msh";

monad::saveGridAndField(grid, results.phi[0], file.string(), "Electric potential");
monad::saveGridAndNodalField(grid, results.phi[0], file.string(), "Electric potential");

std::cout << "Saved to " + file.string() << std::endl;

Expand Down
29 changes: 17 additions & 12 deletions apps/6_LinearPiezoelectricity/6_LinearPiezoelectricity.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,12 @@
*
* The base material's piezoelectric coupling tensor is set to
*
* ```text
* ⎡d 0 0⎤
* ⎣0 -d -d⎦
* ```
*
* where d=E/10.
* where d=⅒E.
*
* The Gmsh files are written to:
*
Expand Down Expand Up @@ -96,55 +98,58 @@ int main(int argc, char* argv[]) {
const monad::LinearElasticMaterial2d elasticMaterial(E, nu, monad::LinearElasticMaterial2d::PlaneCondition::PlaneStress);
const monad::LinearDielectricMaterial2d dielectricMaterial(epsilon);

const auto c = elasticMaterial.materialTensor();
const auto epsilonTensor = dielectricMaterial.materialTensor();
const Eigen::Matrix<double, 2, 3> d {
{E / 10.0, 0.0, 0.0},
{0.0, E / 10.0, E / 10.0}
};

const monad::LinearPiezoelectricMaterial2d material(elasticMaterial, dielectricMaterial, d);
const monad::LinearPiezoelectricMaterial2d material(c, epsilonTensor, d);

const auto folder = std::filesystem::path(__FILE__).parent_path();
const auto csvFile = folder / "data.csv";

grid.setDensitiesFile(csvFile.string());
const auto densityField = monad::makeDensityFieldFromCsv(csvFile);

monad::SolverOptions options;
options.fields = monad::FieldSave::All;

const monad::LinearPiezoelectricSolver solver(grid, material);
const auto results = solver.solve(options);
const monad::LinearPiezoelectricSolver<monad::Quad8Grid> solver;

const auto results = solver.solve(grid, densityField, material, options);

std::cout << "---Homogenized stiffness tensor---\n" << results.cBar << std::endl;
std::cout << "\n---Homogenized permittivity tensor---\n" << results.epsilonBar << std::endl;
std::cout << "\n---Homogenized piezoelectric tensor---\n" << results.dBar << std::endl;

auto file = folder / "density.msh";

monad::saveGrid(grid, file.string(), true);
monad::saveGridAndDensityField(grid, densityField, file.string());

file = folder / "uMacro.msh";

monad::saveGridAndField(grid, results.uMacro[0], file.string(), "Macro displacement");
monad::saveGridAndNodalField(grid, results.uMacro[0], file.string(), "Macro displacement");

file = folder / "uMicro.msh";

monad::saveGridAndField(grid, results.uMicro[0], file.string(), "Micro displacement");
monad::saveGridAndNodalField(grid, results.uMicro[0], file.string(), "Micro displacement");

file = folder / "u.msh";

monad::saveGridAndField(grid, results.u[0], file.string(), "Displacement");
monad::saveGridAndNodalField(grid, results.u[0], file.string(), "Displacement");

file = folder / "phiMacro.msh";

monad::saveGridAndField(grid, results.phiMacro[0], file.string(), "Macro electric potential");
monad::saveGridAndNodalField(grid, results.phiMacro[0], file.string(), "Macro electric potential");

file = folder / "phiMicro.msh";

monad::saveGridAndField(grid, results.phiMicro[0], file.string(), "Micro electric potential");
monad::saveGridAndNodalField(grid, results.phiMicro[0], file.string(), "Micro electric potential");

file = folder / "phi.msh";

monad::saveGridAndField(grid, results.phi[0], file.string(), "Electric potential");
monad::saveGridAndNodalField(grid, results.phi[0], file.string(), "Electric potential");

std::cout << "Saved to " + file.string() << std::endl;

Expand Down
4 changes: 2 additions & 2 deletions assets/create_teaser.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
'custom',
[
(0.0, 'white'),
(0.5, '#e6d0d1'),
(1.0, '#9e5457')
(0.5, '#c9e3f6'),
(1.0, 'C0')
]
)

Expand Down
Binary file modified assets/images/teaser.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading