Geometry Factories

Factory functions for creating standard geometric shapes and test geometries.

Basis Creators

TinyGismo.createBSplineUnitIntervalFunction
createBSplineUnitInterval(deg::Int)

Create a B-spline basis on the unit interval [0, 1].

Arguments

  • deg: Polynomial degree of the basis

Returns

A BSplineBasis of degree deg defined on the parametric domain [0, 1]

Details

This is a convenience function for creating a standard univariate B-spline basis on the unit interval with clamped knot vector.

Examples

# Linear B-spline basis on [0, 1]
basis_linear = createBSplineUnitInterval(1)

# Quadratic B-spline basis on [0, 1]
basis_quad = createBSplineUnitInterval(2)

# Cubic B-spline basis on [0, 1]
basis_cubic = createBSplineUnitInterval(3)
source

Basic Shapes

Rectangles and Quadrilaterals

TinyGismo.createBSplineRectangleFunction
createBSplineRectangle(low_x=0, low_y=0, upp_x=1, upp_y=1, turndeg=0)

Create a B-spline rectangular patch.

Arguments

  • low_x: Lower x-coordinate (default: 0)
  • low_y: Lower y-coordinate (default: 0)
  • upp_x: Upper x-coordinate (default: 1)
  • upp_y: Upper y-coordinate (default: 1)
  • turndeg: Rotation angle in degrees (default: 0)

Returns

A TensorBSpline{2} representing a rectangular patch

Examples

# Unit square
rect = createBSplineRectangle()

# Custom rectangle
rect = createBSplineRectangle(low_x=-1, low_y=-1, upp_x=2, upp_y=3)
source
TinyGismo.createBSplineTrapeziumFunction
createBSplineTrapezium(Lbot=1, Ltop=0.5, H=1, d=0, turndeg=0)
createBSplineTrapezium(Ax, Ay, Bx, By, Cx, Cy, Dx, Dy, turndeg=0)

Create a B-spline trapezoidal patch.

Arguments

Parameter version:

  • Lbot: Length of bottom edge (default: 1)
  • Ltop: Length of top edge (default: 0.5)
  • H: Height (default: 1)
  • d: Horizontal offset of top edge (default: 0)
  • turndeg: Rotation angle in degrees (default: 0)

Corner points version:

  • Ax, Ay: First corner coordinates
  • Bx, By: Second corner coordinates
  • Cx, Cy: Third corner coordinates
  • Dx, Dy: Fourth corner coordinates
  • turndeg: Rotation angle in degrees (default: 0)

Returns

A TensorBSpline{2} representing a trapezoidal patch

Examples

# Parameter version
trap = createBSplineTrapezium(Lbot=2, Ltop=1, H=1.5)

# Corner points version
trap = createBSplineTrapezium(0, 0, 2, 0, 1.5, 1, 0.5, 1)
source
TinyGismo.createNurbsArcTrapeziumFunction
createNurbsArcTrapezium(Lbot=1, Ltop=0.5, H=1, d=0, turndeg=0)
createNurbsArcTrapezium(Ax, Ay, Bx, By, Cx, Cy, Dx, Dy, turndeg=0)

Create a NURBS trapezoidal patch with curved sides.

Arguments

Parameter version:

  • Lbot: Length of bottom edge (default: 1)
  • Ltop: Length of top edge (default: 0.5)
  • H: Height (default: 1)
  • d: Horizontal offset of top edge (default: 0)
  • turndeg: Rotation angle in degrees (default: 0)

Corner points version:

  • Ax, Ay: First corner coordinates
  • Bx, By: Second corner coordinates
  • Cx, Cy: Third corner coordinates
  • Dx, Dy: Fourth corner coordinates
  • turndeg: Rotation angle in degrees (default: 0)

Returns

A TensorNurbs{2} representing a trapezoidal patch with curved edges

Details

Unlike the B-spline version, this creates a trapezium with smoothly curved sides using NURBS.

source

Triangles

TinyGismo.createBSplineTriangleFunction
createBSplineTriangle(H=1, W=1)

Create a triangular B-spline patch.

Arguments

  • H: Height of the triangle (default: 1)
  • W: Width of the triangle base (default: 1)

Returns

A TensorBSpline{2} representing a triangular patch

source

Simple Primitives

TinyGismo.createBSplineSquareFunction
createBSplineSquare(r=1, x=0, y=0)

Create a square B-spline patch.

Arguments

  • r: Radius/scale factor (default: 1)
  • x: Center x-coordinate (default: 0)
  • y: Center y-coordinate (default: 0)

Returns

A TensorBSpline{2} representing a square patch

source
TinyGismo.createBSplineSegmentFunction
createBSplineSegment(u0=0, u1=1)

Create a B-spline line segment.

Arguments

  • u0: Start parameter (default: 0)
  • u1: End parameter (default: 1)

Returns

A Nurbs curve representing a line segment

Details

Creates a simple parametric line segment that can be used as a basis for other constructions.

source

2D Shapes

Circles and Disks

TinyGismo.createNurbsCircleFunction
createNurbsCircle(r=1, x=0, y=0)

Create a NURBS circle curve.

Arguments

  • r: Radius (default: 1)
  • x: Center x-coordinate (default: 0)
  • y: Center y-coordinate (default: 0)

Returns

A Nurbs curve representing a circle

source
TinyGismo.createBSplineFatCircleFunction
createBSplineFatCircle(r=1, x=0, y=0)

Create a B-spline circle patch (disk).

Arguments

  • r: Radius (default: 1)
  • x: Center x-coordinate (default: 0)
  • y: Center y-coordinate (default: 0)

Returns

A TensorBSpline{2} representing a fat circle (disk-like patch)

source
TinyGismo.createBSplineFatDiskFunction
createBSplineFatDisk(r=1, x=0, y=0)

Create a B-spline disk patch.

Arguments

  • r: Radius (default: 1)
  • x: Center x-coordinate (default: 0)
  • y: Center y-coordinate (default: 0)

Returns

A TensorBSpline{2} representing a disk patch

source

Rings and Annuli

TinyGismo.createNurbsQuarterAnnulusFunction
createNurbsQuarterAnnulus(r0=1, r1=2)

Create a quarter annulus (ring) NURBS patch.

Arguments

  • r0: Inner radius (default: 1)
  • r1: Outer radius (default: 2)

Returns

A TensorNurbs{2} representing a quarter annulus

source
TinyGismo.createNurbsAnnulusFunction
createNurbsAnnulus(r0=1, r1=2)

Create a full annulus (ring) NURBS patch.

Arguments

  • r0: Inner radius (default: 1)
  • r1: Outer radius (default: 2)

Returns

A TensorNurbs{2} representing a complete annulus

source

Organic and Custom Shapes

TinyGismo.createBSplineAmoebaFunction
createBSplineAmoeba(r=1, x=0, y=0)

Create an amoeba-shaped B-spline patch.

Arguments

  • r: Radius/scale factor (default: 1)
  • x: Center x-coordinate (default: 0)
  • y: Center y-coordinate (default: 0)

Returns

A TensorBSpline{2} representing an amoeba shape

Details

Creates an organic, blob-like shape useful for testing and demonstrations.

source
TinyGismo.createBSplineAmoebaBigFunction
createBSplineAmoebaBig(r=1, x=0, y=0)

Create a larger amoeba-shaped B-spline patch with more detail.

Arguments

  • r: Radius/scale factor (default: 1)
  • x: Center x-coordinate (default: 0)
  • y: Center y-coordinate (default: 0)

Returns

A TensorBSpline{2} representing a larger amoeba shape

source
TinyGismo.createBSplineAmoeba3degreeFunction
createBSplineAmoeba3degree(r=1, x=0, y=0)

Create a cubic (degree 3) amoeba-shaped B-spline patch.

Arguments

  • r: Radius/scale factor (default: 1)
  • x: Center x-coordinate (default: 0)
  • y: Center y-coordinate (default: 0)

Returns

A TensorBSpline{2} representing an amoeba shape with cubic basis functions

source
TinyGismo.createBSplineFishFunction
createBSplineFish(r=1, x=0, y=0)

Create a fish-shaped B-spline patch.

Arguments

  • r: Radius/scale factor (default: 1)
  • x: Center x-coordinate (default: 0)
  • y: Center y-coordinate (default: 0)

Returns

A TensorBSpline{2} representing a fish shape

source
TinyGismo.createBSplineAustriaFunction
createBSplineAustria(r=1, x=0, y=0)

Create an Austria-shaped B-spline patch.

Arguments

  • r: Radius/scale factor (default: 1)
  • x: Center x-coordinate (default: 0)
  • y: Center y-coordinate (default: 0)

Returns

A TensorBSpline{2} representing the outline of Austria

source
TinyGismo.createNurbsAmoebaFullFunction
createNurbsAmoebaFull(r=1, x=0, y=0)

Create a full amoeba-shaped NURBS patch.

Arguments

  • r: Radius/scale factor (default: 1)
  • x: Center x-coordinate (default: 0)
  • y: Center y-coordinate (default: 0)

Returns

A TensorNurbs{2} representing a full amoeba shape

source
TinyGismo.createNurbsBeanFunction
createNurbsBean(r=1, x=0, y=0)

Create a bean-shaped NURBS patch.

Arguments

  • r: Radius/scale factor (default: 1)
  • x: Center x-coordinate (default: 0)
  • y: Center y-coordinate (default: 0)

Returns

A TensorNurbs{2} representing a bean shape

source
TinyGismo.createBSplineEFunction
createBSplineE(r=1, x=0, y=0)

Create a capital E-shaped B-spline patch.

Arguments

  • r: Radius/scale factor (default: 1)
  • x: Center x-coordinate (default: 0)
  • y: Center y-coordinate (default: 0)

Returns

A TensorBSpline{2} representing the letter E

source

3D Shapes

Volumes

TinyGismo.createBSplineCubeFunction
createBSplineCube(r=1, x=0, y=0, z=0)

Create a cube B-spline volume.

Arguments

  • r: Radius/scale factor (default: 1)
  • x: Center x-coordinate (default: 0)
  • y: Center y-coordinate (default: 0)
  • z: Center z-coordinate (default: 0)

Returns

A TensorBSpline{3} representing a cubic volume

source
TinyGismo.createBSplineHalfCubeFunction
createBSplineHalfCube(r=1, x=0, y=0, z=0)

Create a half-cube B-spline volume.

Arguments

  • r: Radius/scale factor (default: 1)
  • x: Center x-coordinate (default: 0)
  • y: Center y-coordinate (default: 0)
  • z: Center z-coordinate (default: 0)

Returns

A TensorBSpline{3} representing a half-cubic volume

source
TinyGismo.createNurbsCubeFunction
createNurbsCube(r=1, x=0, y=0, z=0)

Create a cube NURBS volume.

Arguments

  • r: Radius/scale factor (default: 1)
  • x: Center x-coordinate (default: 0)
  • y: Center y-coordinate (default: 0)
  • z: Center z-coordinate (default: 0)

Returns

A TensorNurbs{3} representing a cubic volume

source
TinyGismo.createNurbsSphereFunction
createNurbsSphere(r=1, x=0, y=0, z=0)

Create a NURBS sphere.

Arguments

  • r: Radius (default: 1)
  • x: Center x-coordinate (default: 0)
  • y: Center y-coordinate (default: 0)
  • z: Center z-coordinate (default: 0)

Returns

A TensorNurbs{3} representing a sphere

source

Curves

TinyGismo.createNurbsCurve1Function
createNurbsCurve1(r=1, x=0, y=0)

Create a NURBS curve (variant 1).

Arguments

  • r: Radius/scale factor (default: 1)
  • x: Center x-coordinate (default: 0)
  • y: Center y-coordinate (default: 0)

Returns

A Nurbs curve

source
TinyGismo.createNurbsCurve2Function
createNurbsCurve2(r=1, x=0, y=0)

Create a NURBS curve (variant 2).

Arguments

  • r: Radius/scale factor (default: 1)
  • x: Center x-coordinate (default: 0)
  • y: Center y-coordinate (default: 0)

Returns

A Nurbs curve

source

Engineering Benchmarks

TinyGismo.createNurbsQrtPlateWHoleC0Function
createNurbsQrtPlateWHoleC0()

Create a quarter plate with a hole (C0 continuity).

Returns

A TensorNurbs{2} representing a quarter of a plate with a circular hole

Details

This benchmark geometry is commonly used for testing structural mechanics problems, particularly for plates with stress concentrations.

source