1 An Overview of Coreform IGA
Welcome to Coreform IGA!
Coreform IGA is the world’s first fully spline based commercial simulation software that implements the Flex Representation Method, which allows users to setup and solve complex problems in science and engineering with less effort than traditional finite element analyses. Whereas many solvers may sacrifice accuracy or capabilities for the sake of model preparation simplicity, or may require intensive model preparation in order to solve challenging problems, Coreform IGA aims to provide world-class simulation capabilities coupled with simple model setup.
Coreform IGA is actively advancing the state of spline based simulation technology. New features and capabilities are continually being added as they are developed. These new features may not be fully production ready, but they may be of interest to many of our users. Because of this, new features are exposed to users early in the development process but will be marked as (beta) in this reference manual until they have been fully tested and verified. The input and behavior of experimental features may change during development and support will be limited.
1.1 JSON5 Input File Format
Coreform uses the JSON5 Data Interchange Format (JSON5) file format to store input parameters for simulations in Coreform IGA. JSON5 is a modern file format that can store all the data necessary to set up, compute, and display results for isogeometric analysis. JSON5 files are straightforward for humans to understand, write, and edit, but can also be converted to binary files for efficient consumption by computers. In this section we give a brief overview of the JSON5 format and describe specifics of the Coreform IGA input fils structure. Note that for clarity and organization we recommend using the .iga extension for the JSON5 input file provided to the Coreform IGA executable instead of the normal .json5, however either extension will work.
1.1.1 JSON5 syntax
A string in double quotes
A number
A Boolean: true or false
An object. An object contains unordered collections of name/value pairs. An object begins with { (left brace) and ends with } (right brace). Each name is followed by : (colon) and then the value. The name/value pairs are separated by , (comma).
An array. An array is an ordered list of values. Each array begins with [ (left bracket) and ends with ] (right bracket). Values in an array are separated by a , (comma).
These structures can be nested. For a complete description of the JSON5 see the JSON5 specification.
1.1.2 Coreform IGA File Structure
In Coreform IGA input files a name is a predefined keyword or the name of a set that has been defined in the model setup. Value types are specified for each name and can contain any of the types listed previously. All objects in Coreform IGA that are not also a value in a name/value pair contain a label with a value that is a user defined string contained in double quotes. The input file must contain a top level iga object that must contains a label and a version identifier. Consider the following example:
{ label: "iga_input_file", coreform_iga_version: "2024.7", ... }
In this example iga_input_file is a user provided identifier and coreform_iga_version gives the version of Coreform IGA that this input was created for.
The top level object also contains name/value pairs that control the execution of Coreform IGA. A definition pair is a name/value pair where the name is a predefined keyword and the value is an array of definition objects. For example, an intervals (release) pair can be used to define multiple interval definitions, which are used in a number of ways in a simulation. We can add to our simple top level object to contain two interval definitions as follows:
{ label: "iga_input_file", coreform_iga_version: "2024.7", intervals: [ { label: "compress_pad", start_time: 0.0, stop_time: 1.0, }, { label: "output", use_start_stop_from_interval: "compress_pad", step_increment: 1 } ], ... }
The purpose of the object is described by a set of name/value pairs.
Default values for name/value pairs will be specified when appropriate.
- They define a scope.
Inside the definition object scope additional objects can be included to create scoped, related functionality. For example, the non_linear_equation_solver definition object currently only supports a single nested newton object. This can easily be generalized in the future.
- Definition objects are assigned a user-defined label
This label can then be referenced elsewhere in the keyword file, allowing the existence of multiple versions of a definition object where the user can choose which object to include in a given analysis by specifying the label.
Objects can be defined that are not used in the current simulation. This allows input files to be setup with multiple parameter sets that can then be activated by referencing the user defined label at other places in the input file.
The overall structure of Coreform IGA’s input file is provided below, being comprised of multiple top-level arrays:
{ iga: { procedures: [], solid_mechanics_definitions: {}, structural_modal_analysis_definitions: {}, heat_transfer_definitions: {}, flex_model_definitions: [], materials: [], functions: [], intervals: [], time_steppers: [], linear_equation_solvers: [], nonlinear_equation_solvers: [], } }
Each of which are described in more detail in later sections of this document.
1.1.2.1 The procedures Array
In Coreform IGA a solution to a problem statement is given by a procedure object in the procedures (release) array. Currently, the only procedure type supported is solid_mechanics (release), however both structural_modal_analysis (alpha) and heat_transfer (alpha) are available as (beta) capabilities.
{ label: "iga_input_file", coreform_iga_version: "2024.7", solid_mechanics_definitions: { boundary_conditions: [ { label: "x_symmetry_pad", set: "xfaces_pad", displacement: { components: [ "x" ], scale_factor: 0, function: "constant_1" }, }, ] } }
{ procedures: [ { label: "compress_pad", solid_mechanics: { boundary_conditions: [ x_symmetry_pad ] } } ] }
The specific items that must be assigned within a procedure vary based on the procedure type, however all procedure types share these items:
FRM model
Initial, Boundary, and Load conditions
Interactions (e.g., material interfaces, contact)
Probes
Field and History Output
While Coreform IGA will eventually support multi-procedure analyses, currently only a single procedure is supported.
1.1.2.2 The solid_mechanics_definitions Object
The solid_mechanics (release) object contains all the definitions specific to a solid mechanics procedure. Within this object users specify additional objects, within relevant arrays, that can be referenced by a procedure as descrbed earlier.
1.1.2.3 The structural_modal_analysis_definitions Object
The structural_modal_analysis (alpha) object contains all the definitions specific to a structural modal analysis procedure. Within this object users specify additional objects, within relevant arrays, that can be referenced by a procedure as descrbed earlier. Currently the only type of modal analysis supported is natural frequency extraction.
1.1.2.4 The heat_transfer_definitions Object
The heat_transfer (alpha) object contains all the definitions specific to a heat transfer procedure. Within this object users specify additional objects, within relevant arrays, that can be referenced by a procedure as descrbed earlier.
1.1.2.5 The flex_model_definitions Array
The flex_models (release) array holds objects that specify the input FRM database that will be used for the simulation. This database, which is typically exported from Coreform Flex, contains information about the spatial domain and boundary sets that define the simulation problem. The FRM model definition objects associate sets that the user knows to exist in the FRM model, with other objects defined in the IGA input file. For example, this is where a set that represents the spatial domain of the problem is associated with a material.
1.1.2.6 The materials Array
The materials (release) array holds objects that specify the materials that may be used for the simulation. Each object within this array defines a single material, that can be referenced by a flex model as descrbed earlier. Multiple material models can be defined for a material, which can then be selected from when referencing the material in the flex model
1.1.2.7 The functions Array
The functions (release) array holds objects that specify functions that may be referenced by other objects within the simulation.
1.1.2.8 The intervals Array
The intervals (release) array holds objects that specify intervals, of time or timesteps, that may be referenced by other objects within the simulation.
1.1.2.9 The time_steppers Array
The time_steppers (release) array holds objects that specify time_steppers that may be referenced by procedures that require timestepping.
1.1.2.10 The linear_equation_solvers Array
The linear_equation_solvers (release) array holds objects that specify linear equation solvers that may be referenced by timesteppers or nonlinear equation solution techniques.
1.1.2.11 The nonlinear_equation_solvers Array
The linear_equation_solvers (release) array holds objects that specify linear equation solvers that may be referenced by timesteppers.