OpenCMISS-Iron Internal API Documentation
Todo List
Subprogram base_routines::base_routines_finalise (ERR, ERROR,)
Finish this routine and deallocate memory.
Subprogram basis_routines::basis_quadrature_destroy (QUADRATURE, ERR, ERROR,)
fix all this basis/quadrature into standard form.
Subprogram basis_routines::gauss_legendre (N, ALPHA, BETA, X, W, ERR, ERROR,)
Fix this.
Module BASIS_ROUTINES_BasisTypes
Combine simplex and serendipity elements???
File binary_file_f.f90
Fix naming convention and update to current code standard.
Module CELLML_FieldTypes
Link to appropriate methods for instantiation.
Subprogram cmiss_cellml::cellml_create_start (CELLML_USER_NUMBER, REGION, CELLML, ERR, ERROR,)
Should be passing in a region? or leave that for the field mapping?
Subprogram control_loop_routines::control_loop_solver_equations_destroy (CONTROL_LOOP, ERR, ERROR,)
Create solvers_solver_equations_destory and call?
Type coordinate_routines::dxz
CHANGE NAME TO SOMETHING MORE MEANINGFULL?
Subprogram distributed_matrix_vector::distributed_vector_update_isfinished (DISTRIBUTED_VECTOR, ISFINISHED, ERR, ERROR,)
USE MPI_TESTALL and store the request handles as big array.
Type interface_equations_routines::INTERFACE_EQUATIONS_DOMAIN_INTERFACE_INTERPOLATION_
Truncating subroutine name from INTERFACE_EQUATIONS_DOMAIN_INTERFACE_INTERPOLATION_SETUP until bug in gfortran 4.6 is fixed http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46971
Type interface_equations_routines::InterfaceEquations_DomainVariableInterpolationSetup
Truncating subroutine name until bug in gfortran 4.6 is fixed http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46971
Page Library Commands
divide into multiple pages.
File lists.f90
Fix up and have this module use the sorting module for sorts
Page openCMISS & CellML

Keep up-to-date..

Should we now mark the field as read-only for code outside of the CellML environment? or are we smart enough to handle externally applied changes? is there a way to get callbacks or messages when the field changes?

is this field actually used for anything inside the CellML environment or does it simply provide the descretisation at which the models, state, intermediate, and hidden parameters fields must be defined? In this case, code external to the CellML environment is responsible for getting the values it needs from the above named fields.

perhaps better to force the use of CellML simulation metadata, otherwise we need to provide methods to define the equivalent data natively in openCMISS.

Module OPENCMISS_DirectLinearSolverTypes
Move libraries to a more appropriate place.
Type opencmiss_iron::cmfe_controlloop_absolutetoleranceset
need a get method
Type opencmiss_iron::cmfe_controlloop_iterationsset
need a get metod
Type opencmiss_iron::cmfe_controlloop_maximumiterationsset
need a get method
Type opencmiss_iron::cmfe_controlloop_numberofsubloopsset
is this really a public method???
Subprogram opencmiss_iron::cmfe_controlloop_numberofsubloopssetnumber0 (problemUserNumber, controlLoopIdentifier, numberOfSubLoops, err)
is this really public???
Subprogram opencmiss_iron::cmfe_controlloop_numberofsubloopssetnumber1 (problemUserNumber, controlLoopIdentifiers, numberOfSubLoops, err)
is this really public???
Subprogram opencmiss_iron::cmfe_controlloop_numberofsubloopssetobj (controlLoop, numberOfSubLoops, err)
is this really public???
Type opencmiss_iron::cmfe_controlloop_typeset

Is this really a public method?

need a get method

Subprogram opencmiss_iron::cmfe_controlloop_typesetnumber0 (problemUserNumber, controlLoopIdentifier, loopType, err)
is this really public???
Subprogram opencmiss_iron::cmfe_controlloop_typesetnumber1 (problemUserNumber, controlLoopIdentifiers, loopType, err)
is this really public???
Subprogram opencmiss_iron::cmfe_controlloop_typesetobj (controlLoop, loopType, err)
is this really public???
Type opencmiss_iron::cmfe_coordinatesystem_dimensionget

user number method

fix pointers

Type opencmiss_iron::cmfe_coordinatesystem_dimensionset
fix pointers
Type opencmiss_iron::cmfe_coordinatesystem_focusget

user number method

fix pointers

Type opencmiss_iron::cmfe_coordinatesystem_focusset

user number method

fix pointers

Type opencmiss_iron::cmfe_coordinatesystem_radialinterpolationget

user number method

fix pointers

Type opencmiss_iron::cmfe_coordinatesystem_radialinterpolationset

user number method

fix pointers

Type opencmiss_iron::cmfe_coordinatesystem_typeget

user number method

fix pointers

Type opencmiss_iron::cmfe_coordinatesystem_typeset

user number method

fix pointers

Type opencmiss_iron::cmfe_datapoints_labelget
should this be a user number?
Type opencmiss_iron::cmfe_datapoints_labelset
should this be a user number?
Type opencmiss_iron::cmfe_datapoints_valuesget
should this be a user number?
Type opencmiss_iron::cmfe_datapoints_valuesset
should this be a user number?
Type opencmiss_iron::cmfe_datapoints_weightsget
should this be a user number?
Type opencmiss_iron::cmfe_datapoints_weightsset
should this be a user number?
Subprogram opencmiss_iron::cmfe_decomposition_nodedomaingetobj (decomposition, nodeUserNumber, meshComponentNumber, domain, err)
Maybe swap Node and MeshComponent?
Type opencmiss_iron::cmfe_field_meshdecompositionset
remove when fields take decomposition argument on creation???
Subprogram opencmiss_iron::cmfe_fields_elementsexportccobj (fields, fileName, method, err)
number method
Subprogram opencmiss_iron::cmfe_fields_elementsexportcvsobj (fields, fileName, method, err)
number method
Subprogram opencmiss_iron::cmfe_fields_elementsexportvscobj (fields, fileName, method, err)
number method
Subprogram opencmiss_iron::cmfe_fields_elementsexportvsvsobj (fields, fileName, method, err)
number method
Subprogram opencmiss_iron::cmfe_fields_nodesexportccobj (fields, fileName, method, err)
number method
Subprogram opencmiss_iron::cmfe_fields_nodesexportcvsobj (fields, fileName, method, err)
number method
Subprogram opencmiss_iron::cmfe_fields_nodesexportvscobj (fields, fileName, method, err)
number method
Subprogram opencmiss_iron::cmfe_fields_nodesexportvsvsobj (fields, fileName, method, err)
number method
Subprogram opencmiss_iron::cmfe_meshelements_adjacentelementgetnumber (regionUserNumber, meshUserNumber, meshComponentNumber, globalElementNumber, adjacentElementXi, adjacentElement, err)
this should be a user number
Subprogram opencmiss_iron::cmfe_meshelements_adjacentelementgetobj (meshElements, globalElementNumber, adjacentElementXi, adjacentElement, err)
this should be a user number
Subprogram opencmiss_iron::cmfe_meshelements_basisgetnumber (regionUserNumber, meshUserNumber, meshComponentNumber, globalElementNumber, basisUserNumber, err)
should the global element number be a user number?
Subprogram opencmiss_iron::cmfe_meshelements_basisgetobj (meshElements, globalElementNumber, basis, err)
should the global element number be a user number?
Subprogram opencmiss_iron::cmfe_meshelements_basissetnumber (regionUserNumber, meshUserNumber, meshComponentNumber, globalElementNumber, basisUserNumber, err)
should the global element number be a user number?
Subprogram opencmiss_iron::cmfe_meshelements_basissetobj (meshElements, globalElementNumber, basis, err)
should the global element number be a user number?
Subprogram opencmiss_iron::cmfe_meshelements_localelementnodeversionsetnumber (regionUserNumber, meshUserNumber, globalElementNumber, versionNumber, derivativeNumber, localElementNodeNumber, meshComponentNumber, err)
should the global element number be a user number?
Subprogram opencmiss_iron::cmfe_meshelements_localelementnodeversionsetobj (meshElements, globalElementNumber, versionNumber, derivativeNumber, localElementNodeNumber, err)
should the global element number be a user number?
Subprogram opencmiss_iron::cmfe_meshelements_nodesgetnumber (regionUserNumber, meshUserNumber, meshComponentNumber, globalElementNumber, elementUserNodes, err)
should the global element number be a user number?
Subprogram opencmiss_iron::cmfe_meshelements_nodesgetobj (meshElements, globalElementNumber, elementUserNodes, err)
should the global element number be a user number?
Subprogram opencmiss_iron::cmfe_meshelements_nodessetnumber (regionUserNumber, meshUserNumber, meshComponentNumber, globalElementNumber, elementUserNodes, err)
should the global element number be a user number?
Subprogram opencmiss_iron::cmfe_meshelements_nodessetobj (meshElements, globalElementNumber, elementUserNodes, err)
should the global element number be a user number?
Subprogram opencmiss_iron::cmfe_meshelements_usernodeversionsetnumber (regionUserNumber, meshUserNumber, globalElementNumber, versionNumber, derivativeNumber, userNodeNumber, meshComponentNumber, err)
should the global element number be a user number?
Subprogram opencmiss_iron::cmfe_meshelements_usernodeversionsetobj (meshElements, globalElementNumber, versionNumber, derivativeNumber, userNodeNumber, err)
should the global element number be a user number?
Type opencmiss_iron::cmfe_nodes_labelget
should this be a user number?
Subprogram opencmiss_iron::cmfe_nodes_labelgetcnumber (regionUserNumber, nodeGlobalNumber, label, err)
should this be user number??
Subprogram opencmiss_iron::cmfe_nodes_labelgetcobj (nodes, nodeGlobalNumber, label, err)
should this be user number??
Subprogram opencmiss_iron::cmfe_nodes_labelgetvsnumber (regionUserNumber, nodeGlobalNumber, label, err)
should this be user number??
Subprogram opencmiss_iron::cmfe_nodes_labelgetvsobj (nodes, nodeGlobalNumber, label, err)
should this be user number??
Type opencmiss_iron::cmfe_nodes_labelset
should this be a user number?
Subprogram opencmiss_iron::cmfe_nodes_labelsetcnumber (regionUserNumber, nodeGlobalNumber, label, err)
should this be user number??
Subprogram opencmiss_iron::cmfe_nodes_labelsetcobj (nodes, nodeGlobalNumber, label, err)
should this be user number??
Subprogram opencmiss_iron::cmfe_nodes_labelsetvsnumber (regionUserNumber, nodeGlobalNumber, label, err)
should this be user number??
Subprogram opencmiss_iron::cmfe_nodes_labelsetvsobj (nodes, nodeGlobalNumber, label, err)
should this be user number??
Subprogram opencmiss_iron::cmfe_nodes_usernumbergetobj (nodes, nodeGlobalNumber, nodeUserNumber, err)
should this be user number??
Subprogram opencmiss_iron::cmfe_nodes_usernumbersetobj (nodes, nodeGlobalNumber, nodeUserNumber, err)
should this be user number??
Type opencmiss_iron::cmfe_solver_daeeulersolvertypeget
should this be CMISSSolver_DAEEulerSolverTypeGet???
Type opencmiss_iron::cmfe_solver_daeeulersolvertypeset
should this be CMISSSolver_DAEEulerSolverTypeSet???
Subprogram region_routines::region_destroy_number (USER_NUMBER, ERR, ERROR,)
create destroy by pointer method.
Subprogram solver_routines::solver_newton_absolute_tolerance_set (SOLVER, ABSOLUTE_TOLERANCE, ERR, ERROR,)
should this be SOLVER_NONLINEAR_NEWTON_ABSOLUTE_TOLERANCE_SET???
Subprogram solver_routines::solver_newton_cellml_solver_get (SOLVER, CELLML_SOLVER, ERR, ERROR,)
should this be SOLVER_NONLINEAR_NEWTON_CELLML_SOLVER_GET???
Subprogram solver_routines::solver_newton_jacobian_calculation_type_set (SOLVER, JACOBIAN_CALCULATION_TYPE, ERR, ERROR,)
should this be SOLVER_NONLINEAR_NEWTON_JACOBIAN_CALCULATION_SET???
Subprogram solver_routines::solver_newton_linear_solver_get (SOLVER, LINEAR_SOLVER, ERR, ERROR,)
should this be SOLVER_NONLINEAR_NEWTON_LINEAR_SOLVER_GET???
Subprogram solver_routines::solver_newton_linesearch_alpha_set (SOLVER, LINESEARCH_ALPHA, ERR, ERROR,)
should this be SOLVER_NONLINEAR_NEWTON_LINESEARCH_ALPHA_SET???
Subprogram solver_routines::solver_newton_linesearch_maxstep_set (SOLVER, LINESEARCH_MAXSTEP, ERR, ERROR,)
should this be SOLVER_NONLINEAR_NEWTON_LINESEARCH_MAXSTEP_SET???
Subprogram solver_routines::solver_newton_linesearch_steptol_set (SOLVER, LINESEARCH_STEPTOL, ERR, ERROR,)
should this be SOLVER_NONLINEAR_NEWTON_LINESEARCH_STEPTOL_SET???
Subprogram solver_routines::solver_newton_linesearch_type_set (SOLVER, LINESEARCH_TYPE, ERR, ERROR,)
should this be SOLVER_NONLINEAR_NEWTON_LINESEARCH_TYPE_SET???
Subprogram solver_routines::solver_newton_maximum_iterations_set (SOLVER, MAXIMUM_ITERATIONS, ERR, ERROR,)
should this be SOLVER_NONLINEAR_NEWTON_MAXIMUM_ITERATIONS_SET???
Subprogram solver_routines::solver_newton_relative_tolerance_set (SOLVER, RELATIVE_TOLERANCE, ERR, ERROR,)
should this be SOLVER_NONLINEAR_NEWTON_RELATIVE_TOLERANCE_SET???
Subprogram solver_routines::solver_newton_solution_tolerance_set (SOLVER, SOLUTION_TOLERANCE, ERR, ERROR,)
should this be SOLVER_NONLINEAR_NEWTON_SOLUTION_TOLERANCE_SET???
Subprogram solver_routines::solver_newton_trustregion_delta0_set (SOLVER, TRUSTREGION_DELTA0, ERR, ERROR,)
should this be SOLVER_NONLINEAR_NEWTON_TRUSTREGION_DELTA0_SET???
Subprogram solver_routines::solver_newton_trustregion_tolerance_set (SOLVER, TRUSTREGION_TOLERANCE, ERR, ERROR,)
should this be SOLVER_NONLINEAR_NEWTON_TRUSTREGION_TOLERANCE_SET???
Subprogram solver_routines::solver_newton_type_set (SOLVER, NEWTON_SOLVE_TYPE, ERR, ERROR,)
should this be SOLVER_NONLINEAR_NEWTON_TYPE_SET???
Subprogram solver_routines::solver_newtonmaximumfunctionevaluationsset (SOLVER, MAXIMUM_FUNCTION_EVALUATIONS, ERR, ERROR,)
should this be SOLVER_NONLINEAR_NEWTON_MAXIMUM_FUNCTION_EVALUATIONS_SET???
Type types::cellml_ptr_type
Is this needed? not currently used...
Type types::coordinate_system_type
Have a list of coordinate systems and have a pointer in the coordinate_system_type back to the regions that use them.
Subprogram types::decomposition_elements_type::elements
Change this to allocatable???
Subprogram types::decomposition_type::domain
Change this to allocatable???
Subprogram types::distributed_matrix_petsc_type::data_dp
Is this used???
Subprogram types::distributed_matrix_petsc_type::list
Comment
Subprogram types::domain_elements_type::elements
Change this to allocatable???
Subprogram types::domain_face_type::xi_direction1
move this to the decomposition face type
Subprogram types::domain_face_type::xi_direction2
move this to the decomposition face type
Subprogram types::domain_node_type::surrounding_elements
Change this to allocatable.
Subprogram types::domain_nodes_type::nodes
Change this to allocatable???
Subprogram types::equations_matrices_rhs_type::vector
rename this RHS_VECTOR
Subprogram types::equations_matrices_source_type::vector
rename this SOURCE_VECTOR
Subprogram types::equations_set_analytic_type::analytic_user_params
should this be allocated?
Subprogram types::field_element_param_to_dof_map_type::elements
Allow for multiple element parameters per element.
Subprogram types::field_parameter_sets_type::parameter_sets
change to allocatable. A pointer to an array of pointers to the parameter sets that have been created on the field. PARAMETER_SET(set_type_idx)PTR is a pointer to the parameter set type for the set_type_idx'th parameter set that has been created. set_type_idx can vary from 1 to the number of parameter set types that have currently been created for the field i.e., TYPES::FIELD_PARAMETER_SETS_TYPE::NUMBER_OF_PARAMETER_SETS.
Subprogram types::field_scaling_type::scale_factors
Make scale factors nodally based for now. Will have to revert to element based and extended to be a matrix to allow for a global derivative to be mapped onto many different element derivatives at the points that closes meshes or for inconsistent xi directions
Subprogram types::interface_element_connectivity_type::xi
the XI array needs to be restructured to efficiently utilize memory when coupling bodies with 2xi directions to bodies with 3xi directions using an interface.
Subprogram types::mesh_type::topology
Change to allocatable?
Subprogram types::meshelementstype::elements
Should this be allocatable.
Subprogram types::meshnodestype::nodes
Should this be allocatable???
Subprogram types::meshnodetype::surroundingelements
Change this to allocatable.
Type types::quadrature_scheme_type
Also evaluate the product of the basis functions at gauss points for speed???
Subprogram types::region_type::sub_regions
make this allocatable
Type types::variable_to_solver_col_map_type
rename solver col to be solver dof here???