forked from 1b-agent/fieldcraft-upstream
Rename the project to FieldCraft
Crates fieldcraft-*, binaries fieldcraft and fieldcraft-cli, the .fieldcraft file (format tag fieldcraft/1, manifest fieldcraft.json), FIELDCRAFT_* environment variables, the MCP server name, egui widget ids (fc_*), the app icon document FieldCraft.icon and its generated family, docs and licences. No compatibility shim: no files of the earlier name exist. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
This commit is contained in:
1 parent
9bc4e1b182
commit
d5bd74570f
268 files changed
+1666
-1666
No files matched your search
@@ -13,10 +13,10 @@
|
||||
//!
|
||||
//! Run with `--nocapture` to see the errors.
|
||||
|
||||
use modelcraft_explicit::elements::{Motion, State, Workspace, internal_forces};
|
||||
use modelcraft_explicit::system::System;
|
||||
use modelcraft_explicit::{ExplicitResult, Failure, Limits, solve_explicit};
|
||||
use modelcraft_model::*;
|
||||
use fieldcraft_explicit::elements::{Motion, State, Workspace, internal_forces};
|
||||
use fieldcraft_explicit::system::System;
|
||||
use fieldcraft_explicit::{ExplicitResult, Failure, Limits, solve_explicit};
|
||||
use fieldcraft_model::*;
|
||||
|
||||
/// A block [0, size] of `n` cells: one hex8 per cell, or six tet4 (Kuhn's split).
|
||||
fn block(n: [usize; 3], size: [f64; 3], kind: ElementKind) -> Model {
|
||||
@@ -179,7 +179,7 @@ impl Driver {
|
||||
self.try_go(to, dt).unwrap()
|
||||
}
|
||||
|
||||
fn try_go(&mut self, to: impl Fn([f64; 3]) -> [f64; 3], dt: f64) -> modelcraft_explicit::Result<[f64; 6]> {
|
||||
fn try_go(&mut self, to: impl Fn([f64; 3]) -> [f64; 3], dt: f64) -> fieldcraft_explicit::Result<[f64; 6]> {
|
||||
let mut du = vec![0.0; self.u.len()];
|
||||
for (i, x0) in self.sys.xyz.iter().enumerate() {
|
||||
let x = to(*x0);
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
|
||||
use std::f64::consts::PI;
|
||||
|
||||
use modelcraft_explicit::{ExplicitResult, Limits, solve_explicit};
|
||||
use modelcraft_fem::truss::axial;
|
||||
use modelcraft_model::*;
|
||||
use fieldcraft_explicit::{ExplicitResult, Limits, solve_explicit};
|
||||
use fieldcraft_fem::truss::axial;
|
||||
use fieldcraft_model::*;
|
||||
|
||||
fn model(step: ExplicitDynamic) -> Model {
|
||||
let mut m = Model::default();
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
//! a free bar by α ΔT L without stress; a bar held at both ends carries σ = −E α ΔT, and with
|
||||
//! perfectly plastic J2 the stress stops at the yield stress.
|
||||
|
||||
use modelcraft_explicit::{Limits, solve_explicit};
|
||||
use modelcraft_model::*;
|
||||
use fieldcraft_explicit::{Limits, solve_explicit};
|
||||
use fieldcraft_model::*;
|
||||
|
||||
const YOUNG: f64 = 1.0e4;
|
||||
const ALPHA: f64 = 1.0e-4;
|
||||
@@ -115,7 +115,7 @@ fn a_clamped_bar_carries_minus_e_alpha_dt_up_to_yield() {
|
||||
let r = solve_explicit(&bar(kind, true, Some(plastic)), None, &Limits::default()).unwrap();
|
||||
let last = r.frames.last().unwrap();
|
||||
for (s, ep) in last.stress.iter().zip(&last.plastic_strain) {
|
||||
let mises = modelcraft_fem::von_mises(s);
|
||||
let mises = fieldcraft_fem::von_mises(s);
|
||||
assert!((mises - 0.5 * sigma.abs()).abs() < 0.02 * sigma.abs(), "{kind:?}: {s:?}");
|
||||
assert!(*ep > 0.0, "{kind:?}: plastic strain {ep}");
|
||||
}
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
//! The bar has Poisson's ratio 0, so a uniaxial stress wave travels at the rod speed c = √(E/ρ)
|
||||
//! without lateral inertia effects (d'Alembert's solution of the one-dimensional wave equation).
|
||||
|
||||
use modelcraft_explicit::{ExplicitResult, Limits, solve_explicit};
|
||||
use modelcraft_model::*;
|
||||
use fieldcraft_explicit::{ExplicitResult, Limits, solve_explicit};
|
||||
use fieldcraft_model::*;
|
||||
|
||||
const YOUNG: f64 = 1.0e4;
|
||||
const DENSITY: f64 = 1.0;
|
||||
|
||||
Reference in new issue
Block a user