Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
84b515e
[dev] Use local packages
cpmech Nov 20, 2025
fcd2a5c
Impl get_cells_via_points_2d
cpmech Nov 25, 2025
d2df520
ReImplement function to search_features_2d
cpmech Nov 28, 2025
4c3771b
Add comment
cpmech Nov 28, 2025
8e62166
Update get_sorted_points with new argsort functions (without tolerance)
cpmech Nov 29, 2025
403f5b7
Fix lint errors
cpmech Dec 10, 2025
52b1d06
Update dependencies
cpmech Dec 31, 2025
eaa13a3
Update plotpy
cpmech Jan 27, 2026
459e519
Impl all_points for Edges
cpmech Apr 8, 2026
55abfe4
Impl all_points for Faces
cpmech Apr 8, 2026
dd002ad
Impl get_cells_pairs_via_2d_edge
cpmech Apr 8, 2026
a140daf
Impl get_cells_pairs_via_face
cpmech Apr 8, 2026
abf8c46
Impl get_cells_pairs_via_2d_edges
cpmech Apr 8, 2026
5a6ce04
Impl get_cells_pairs_via_faces
cpmech Apr 8, 2026
755f1c4
Improve doc comments
cpmech Apr 8, 2026
935e4d9
Add figures with the Gauss Points
cpmech Apr 9, 2026
c4b5985
Update dependencies
cpmech Jun 8, 2026
aa5bad4
Update GH Action scripts
cpmech Jun 8, 2026
f29ef65
Use default features in GH Action script
cpmech Jun 8, 2026
c11c47b
Update README
cpmech Jun 8, 2026
d32e8a8
Add GH Action to test with IntelMKL and Local Libs
cpmech Jun 8, 2026
1dc2bab
Fix Dockerfile
cpmech Jun 8, 2026
997da61
Add missing MUMPS makefile template file
cpmech Jun 8, 2026
a81f44d
Update checkout version
cpmech Jun 8, 2026
3ee6b2f
Change the tolerance from 1e-15 to 1e-14 in block.rs tests
cpmech Jun 8, 2026
9671113
Improve the yay 504 issues
cpmech Jun 8, 2026
f4e0aae
Use Chaotic-AUR because of 504 errors with the official Yay
cpmech Jun 8, 2026
b3990ab
Fix Dockerfile
cpmech Jun 8, 2026
d5ab610
Change test tol slightly
cpmech Jun 8, 2026
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
19 changes: 19 additions & 0 deletions .github/workflows/arch.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: Arch
on: [pull_request]
jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- alternative: ""
label: Default
- alternative: "1"
label: Alternative
name: test (${{ matrix.label }})
steps:
- uses: actions/checkout@v5
- name: Build docker image
run: |
bash zscripts/docker-build-arch.bash ${{ matrix.alternative }}
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
name: Test & Coverage
name: Ubuntu
on: [pull_request]
jobs:
test_and_coverage:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Install Libraries
run: |
sudo apt-get update -y && sudo apt-get install -y liblapacke-dev libmumps-seq-dev libopenblas-dev libsuitesparse-dev python3-matplotlib
sudo apt-get update -y && sudo apt-get install -y liblapacke-dev libopenblas-dev libsuitesparse-dev
- name: Run tests
run: |
cargo test -- --nocapture
Expand All @@ -16,7 +16,7 @@ jobs:
curl -LsSf https://github.com/taiki-e/cargo-llvm-cov/releases/latest/download/cargo-llvm-cov-x86_64-unknown-linux-gnu.tar.gz | tar xzf - -C ~/.cargo/bin
- name: Generate code coverage
run: |
cargo llvm-cov --all-features --workspace --ignore-filename-regex build.rs --lcov --output-path lcov.info
cargo llvm-cov --workspace --ignore-filename-regex build.rs --lcov --output-path lcov.info
- name: Upload to codecov.io
uses: codecov/codecov-action@v3
with:
Expand Down
34 changes: 33 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,19 +1,51 @@
{
"cSpell.words": [
"archlinux",
"argsort",
"Bbᵐᵢ",
"blas",
"connectivities",
"conv",
"cpmech",
"cuthill",
"deque",
"Dorival",
"drawmsh",
"Durand",
"extrap",
"Farias",
"gemlab",
"integ",
"ldconfig",
"liblapacke",
"libopenblas",
"libsuitesparse",
"makepkg",
"matplotlib",
"nfacet",
"ngauss",
"ngausss",
"nmarked",
"nnode",
"nocapture",
"noconfirm",
"NOPASSWD",
"oneapi",
"openblas",
"pacman",
"Pedroso",
"PINV",
"plotpy",
"serde",
"setvars",
"Stockmeyer",
"structopt",
"suitesparse",
"tetgen",
"tritet",
"Warshall",
"zrange"
"zdocker",
"zrange",
"zscripts"
]
}
23 changes: 16 additions & 7 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,25 @@ readme = "README.md"
categories = ["mathematics", "science"]
keywords = ["geometry", "mesh", "fem"]

[features]
intel_mkl = [
"russell_lab/intel_mkl",
"russell_sparse/intel_mkl",
"russell_stat/intel_mkl",
"russell_tensor/intel_mkl",
]
local_sparse = ["russell_sparse/local_sparse"]

[dependencies]
plotpy = "1.14"
russell_lab = "1.10"
russell_sparse = "1.10"
russell_stat = "1.10"
russell_tensor = "1.10"
tritet = "2.0"
plotpy = "1.23"
russell_lab = "2.1"
russell_sparse = "2.1"
russell_stat = "2.1"
russell_tensor = "2.1"
tritet = { version = "3.2", features = ["with_tetgen"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
structopt = "0.3"

[dev-dependencies]
criterion = "0.7"
criterion = "0.8"
58 changes: 31 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# Geometry, meshes, and numerical integration for finite element analyses <!-- omit from toc -->

[![codecov](https://codecov.io/gh/cpmech/gemlab/graph/badge.svg?token=OjQKQ0PrNF)](https://codecov.io/gh/cpmech/gemlab)
[![Test & Coverage](https://github.com/cpmech/gemlab/actions/workflows/test_and_coverage.yml/badge.svg)](https://github.com/cpmech/gemlab/actions/workflows/test_and_coverage.yml)
[![Arch](https://github.com/cpmech/gemlab/actions/workflows/arch.yml/badge.svg)](https://github.com/cpmech/gemlab/actions/workflows/arch.yml)
[![Ubuntu](https://github.com/cpmech/gemlab/actions/workflows/ubuntu.yml/badge.svg)](https://github.com/cpmech/gemlab/actions/workflows/ubuntu.yml)

[![documentation](https://img.shields.io/badge/gemlab-documentation-blue)](https://docs.rs/gemlab)

Expand All @@ -10,9 +11,12 @@
- [Introduction](#introduction)
- [Documentation](#documentation)
- [Installation](#installation)
- [TL;DR (Debian/Ubuntu/Linux)](#tldr-debianubuntulinux)
- [Details](#details)
- [Setting Cargo.toml](#setting-cargotoml)
- [Arch Linux](#arch-linux)
- [1. Default](#1-default)
- [2. Alternative](#2-alternative)
- [Debian/Ubuntu Linux](#debianubuntu-linux)
- [1. Default](#1-default-1)
- [2. Alternative](#2-alternative-1)
- [Examples](#examples)
- [MSH file format](#msh-file-format)
- [Numerical integration](#numerical-integration)
Expand All @@ -38,44 +42,44 @@ This crate contains structures and functions for geometry computations, generate

## Installation

At this moment, Gemlab works on **Linux** (Debian/Ubuntu; and maybe Arch).
This crate depends on [Russell (Rust Scientific Library)](https://github.com/cpmech/russell) and, therefore, has the same dependencies as `russell`. Among the combinations described in `russell` website, the following are recommended here:

### TL;DR (Debian/Ubuntu/Linux)
1. **Default** - Use [OpenBLAS](https://github.com/OpenMathLib/OpenBLAS) and [SuiteSparse](https://github.com/DrTimothyAldenDavis/SuiteSparse)
2. **Alternative** - Use [Intel MKL](https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl.html) and locally compiled [SuiteSparse](https://github.com/DrTimothyAldenDavis/SuiteSparse) and the [MUMPS solver](https://mumps-solver.org)

First:
Therefore, the following (re-exported) **features** are available here:

```bash
sudo apt-get install -y --no-install-recommends \
g++ \
gdb \
gfortran \
liblapacke-dev \
libmumps-seq-dev \
libopenblas-dev \
libsuitesparse-dev
```
* `intel_mkl` - Tells `russell` to use Intel MKL
* `local_sparse` - Tells `russell` that the local linear solvers are available locally

### Arch Linux

#### 1. Default

Then:
Install some dependencies:

```bash
cargo add gemlab
pacman -Syu blas-openblas python-matplotlib suitesparse
```

### Details
#### 2. Alternative

This crates depends on `russell_lab` and, hence, needs some external libraries. See the [installation of required dependencies](https://github.com/cpmech/russell) on `russell_lab`.
Check [Russell (Rust Scientific Library)](https://github.com/cpmech/russell) out for detailed instructions on how to install the optional dependencies.

### Setting Cargo.toml
### Debian/Ubuntu Linux

[![Crates.io](https://img.shields.io/crates/v/gemlab.svg)](https://crates.io/crates/gemlab)
#### 1. Default

👆 Check the crate version and update your Cargo.toml accordingly:
Install some dependencies:

```toml
[dependencies]
gemlab = "*"
```bash
sudo apt-get install -y liblapacke-dev libopenblas-dev libsuitesparse-dev python3-matplotlib
```

#### 2. Alternative

Check [Russell (Rust Scientific Library)](https://github.com/cpmech/russell) out for detailed instructions on how to install the optional dependencies.



## Examples
Expand Down
Loading
Loading