|
1 | | -# Use Cases |
| 1 | +# Use Cases IGA – External Boundary Circle (NURBS) — README.txt |
| 2 | + |
| 3 | +Short description |
| 4 | +This example runs a 2D IGA structural model whose outer boundary is a NURBS circle. A manufactured solution is enforced to validate the setup. |
| 5 | + |
| 6 | +Files |
| 7 | +- ProjectParameters.json |
| 8 | +- materials.json |
| 9 | +- nurbs_files/circle_nurbs.json |
| 10 | +- run_and_post.py (optional) |
| 11 | + |
| 12 | +Geometry / modeling (very brief) |
| 13 | +- ImportNurbsSbmModeler loads the circle NURBS into “initial_skin_model_part_out”. |
| 14 | +- NurbsGeometryModelerSbm builds the analysis surface (order [2,2], knot spans [20,20]) and creates “skin_model_part”. |
| 15 | +- IgaModelerSbm creates: |
| 16 | + • SolidElement on IgaModelPart.StructuralAnalysisDomain |
| 17 | + • SbmSolidCondition on SurfaceEdge (brep_ids: [2]) → IgaModelPart.SBM_Support_outer |
| 18 | + |
| 19 | +Manufactured BCs and loads |
| 20 | +- Displacement on outer boundary: |
| 21 | + u = [ -cos(x)*sinh(y), sin(x)*cosh(y), 0.0 ] |
| 22 | +- Body force in the domain (consistent with the above): |
| 23 | + BODY_FORCE = [ |
| 24 | + -1000*(1+0.3)/(1-0.3*0.3)*cos(x)*sinh(y), |
| 25 | + -1000*(1+0.3)/(1-0.3*0.3)*sin(x)*cosh(y), |
| 26 | + 0.0 |
| 27 | + ] |
| 28 | + |
| 29 | +Solver (key settings) |
| 30 | +- Static, nonlinear; OpenMP |
| 31 | +- Single time step: dt = 0.1, end_time = 0.1 |
| 32 | +- Linear solver: LinearSolversApplication.sparse_lu |
| 33 | + |
| 34 | +Minimal materials.json (example) |
| 35 | +Use plane strain (or plane stress) linear elastic; keep it consistent with ν=0.3: |
| 36 | +{ |
| 37 | + "properties": [{ |
| 38 | + "model_part_name": "IgaModelPart.StructuralAnalysisDomain", |
| 39 | + "properties_id": 1, |
| 40 | + "Material": { |
| 41 | + "constitutive_law": { "name": "LinearElasticPlaneStrain2DLaw" }, |
| 42 | + "Variables": { |
| 43 | + "YOUNG_MODULUS": 1000.0, |
| 44 | + "POISSON_RATIO": 0.3, |
| 45 | + "DENSITY": 1.0 |
| 46 | + } |
| 47 | + } |
| 48 | + }] |
| 49 | +} |
| 50 | + |
| 51 | +Run: |
| 52 | + python3 run_and_post.py # to reproduce the error |
| 53 | + python3 convergence.py # for the convergence analysis |
| 54 | + python3 plot_surrogate_boundaries.py # to visualize the surrogate and true boundaries |
2 | 55 |
|
3 | | -This folder contains the validation cases: |
4 | 56 |
|
0 commit comments