pinnicle.physics

pinnicle.physics.constants module

class pinnicle.physics.constants.Constants(**kwargs)[source]

Bases: object

Base class of all physical constants, in [SI]

pinnicle.physics.continuity module

class pinnicle.physics.continuity.MC(parameters=<pinnicle.physics.continuity.MCEquationParameter object>)[source]

Bases: EquationBase

MC on 2D problem

class pinnicle.physics.continuity.MC4MOLHO(parameters=<pinnicle.physics.continuity.MC4MOLHOEquationParameter object>)[source]

Bases: EquationBase

MC include vertical shear

class pinnicle.physics.continuity.MC4MOLHOEquationParameter(param_dict={})[source]

Bases: EquationParameter, Constants

default parameters for mass conservation with vertical shear

set_default()[source]

set default values

class pinnicle.physics.continuity.MCEquationParameter(param_dict={})[source]

Bases: EquationParameter, Constants

default parameters for mass conservation

set_default()[source]

set default values

class pinnicle.physics.continuity.Thickness(parameters=<pinnicle.physics.continuity.ThicknessEquationParameter object>)[source]

Bases: EquationBase

2D time depenent thickness evolution

class pinnicle.physics.continuity.ThicknessEquationParameter(param_dict={})[source]

Bases: EquationParameter, Constants

default parameters for mass conservation

set_default()[source]

set default values

pinnicle.physics.dummy module

class pinnicle.physics.dummy.Dummy(parameters=<pinnicle.physics.dummy.DummyEquationParameter object>)[source]

Bases: EquationBase

class pinnicle.physics.dummy.DummyEquationParameter(param_dict={})[source]

Bases: EquationParameter, Constants

default parameters for Dummy PDE

check_consistency()[source]

output can not be empty

set_default()[source]

set default values

update()[source]

set all the weights to 1, and load all the lb and ub is not given

pinnicle.physics.equationbase module

class pinnicle.physics.equationbase.EquationBase(parameters=<pinnicle.parameter.EquationParameter object>)[source]

Bases: ABC, Constants

base class of all the equations

classmethod create(equation_type, **kwargs)[source]
get_input_list()[source]

get the List of names of input variables

get_output_list()[source]

get the List of names of output variables

subclasses = {'CalvingFront': <class 'pinnicle.physics.boundaryconditions.CalvingFrontBC'>, 'DUMMY': <class 'pinnicle.physics.dummy.Dummy'>, 'MC': <class 'pinnicle.physics.continuity.MC'>, 'MC4MOLHO': <class 'pinnicle.physics.continuity.MC4MOLHO'>, 'MOLHO': <class 'pinnicle.physics.stressbalance.MOLHO'>, 'MOLHO Taub': <class 'pinnicle.physics.stressbalance.MOLHO_Taub'>, 'Mass transport': <class 'pinnicle.physics.continuity.Thickness'>, 'SSA': <class 'pinnicle.physics.stressbalance.SSA'>, 'SSA First': <class 'pinnicle.physics.stressbalance.SSA_First'>, 'SSA Taub': <class 'pinnicle.physics.stressbalance.SSA_Taub'>, 'SSA_SHELF': <class 'pinnicle.physics.iceshelf.SSAShelf'>, 'SSA_SHELF_VB': <class 'pinnicle.physics.iceshelf.SSAShelfVariableB'>, 'SSA_VB': <class 'pinnicle.physics.stressbalance.SSAVariableB'>, 'Time_Invariant': <class 'pinnicle.physics.timeinvariant.TimeInvariantConstraint'>, 'Weertman': <class 'pinnicle.physics.friction.WeertmanFriction'>}
update_id(global_input_var=None, global_output_var=None)[source]

update component id, always remeber to call this in compiling the model

Parameters:
  • global_input_var – List of input_variables to nn, these variables are shared across all the physics

  • global_output_var – List of output_variables from nn, these variables are shared across all the physics

update_parameters(parameters)[source]

update attributes of the class using EquationParameter

update_scalars(scalar_variables: dict)[source]

update scalars in the equations

pinnicle.physics.physics module

class pinnicle.physics.physics.Physics(parameters=<pinnicle.parameter.PhysicsParameter object>)[source]

Bases: object

All the physics in used as constraint in the PINN

calving_front(nn_input_var, nn_output_var, X)[source]

calculate the calving front boundary condition

Parameters:
  • nn_input_var – input tensor to the nn

  • nn_output_var – output tensor from the nn

  • X – NumPy array of the collocation points defined on the boundary, required by deepxde

operator(pname)[source]

grab the pde operator, used for testing the pdes and plotting

Parameters:

pname – pde operator name (string), case insensitive

pdes(nn_input_var, nn_output_var)[source]

a wrapper of all the equations used in the PINN, Args need to follow the requirment by deepxde

Parameters:
  • nn_input_var – input tensor to the nn

  • nn_output_var – output tensor from the nn

surf_x(nn_input_var, nn_output_var, X)[source]

dsdx

surf_y(nn_input_var, nn_output_var, X)[source]

dsdy

user_defined_gradient(output_var, input_var)[source]
compute the gradient of output_var with respect to the input_var, return a function wrapper for PointSetOperatorBC

TODO: implement jax version

Parameters:
  • input_var – string name of input variable (independent variable)

  • output_var – string name of output variable (dependent variable)

vel_mag(nn_input_var, nn_output_var, X)[source]

a wrapper for PointSetOperatorBC func call, Args need to follow the requirment by deepxde

Parameters:
  • nn_input_var – input tensor to the nn

  • nn_output_var – output tensor from the nn

  • X – NumPy array of the collocation points defined on the boundary, required by deepxde

pinnicle.physics.stressbalance module

class pinnicle.physics.stressbalance.MOLHO(parameters=<pinnicle.parameter.EquationParameter object>)[source]

Bases: EquationBase

MOLHO on 2D problem with uniform B

class pinnicle.physics.stressbalance.MOLHOEquationParameter(param_dict={})[source]

Bases: EquationParameter, Constants

default parameters for MOLHO

set_default()[source]

set default values

class pinnicle.physics.stressbalance.MOLHOTauEquationParameter(param_dict={})[source]

Bases: EquationParameter, Constants

default parameters for MOLHO Taub

set_default()[source]

set default values

class pinnicle.physics.stressbalance.MOLHO_Taub(parameters=<pinnicle.parameter.EquationParameter object>)[source]

Bases: EquationBase

MOLHO on 2D problem with uniform B, but use taub

class pinnicle.physics.stressbalance.SSA(parameters=<pinnicle.physics.stressbalance.SSAEquationParameter object>)[source]

Bases: EquationBase

SSA on 2D problem with uniform B

class pinnicle.physics.stressbalance.SSAEquationParameter(param_dict={})[source]

Bases: EquationParameter, Constants

default parameters for SSA

set_default()[source]

set default values

class pinnicle.physics.stressbalance.SSAFirstEquationParameter(param_dict={})[source]

Bases: EquationParameter, Constants

default parameters for SSA first order form

set_default()[source]

set default values

class pinnicle.physics.stressbalance.SSATauEquationParameter(param_dict={})[source]

Bases: EquationParameter, Constants

default parameters for SSA Taub

set_default()[source]

set default values

class pinnicle.physics.stressbalance.SSAVariableB(parameters=<pinnicle.physics.stressbalance.SSAVariableBEquationParameter object>)[source]

Bases: EquationBase

SSA on 2D problem with spatially varying B

class pinnicle.physics.stressbalance.SSAVariableBEquationParameter(param_dict={})[source]

Bases: EquationParameter, Constants

default parameters for SSA, with spatially varying rheology B

set_default()[source]

set default values

class pinnicle.physics.stressbalance.SSA_First(parameters=<pinnicle.physics.stressbalance.SSATauEquationParameter object>)[source]

Bases: EquationBase

SSA on 2D problem with uniform B, no friction law, but use taub

class pinnicle.physics.stressbalance.SSA_Taub(parameters=<pinnicle.physics.stressbalance.SSATauEquationParameter object>)[source]

Bases: EquationBase

SSA on 2D problem with uniform B, no friction law, but use taub

pinnicle.physics.timeinvariant module

class pinnicle.physics.timeinvariant.TimeInvariantConstraint(parameters=<pinnicle.physics.timeinvariant.TimeInvariantConstraintParameter object>)[source]

Bases: EquationBase

A temporary solution to add time invariant constraint db/dt=0, dC/dt=0 to the PINN .. todo:

1. define these for every time independent equation, similar as _pde_jax
2. use tf.cond, and similar autograph for pytorch and jax (when they have these implemented), put everything all in _pde
class pinnicle.physics.timeinvariant.TimeInvariantConstraintParameter(param_dict={})[source]

Bases: EquationParameter, Constants

parameters for the time-invariant constraint

set_default()[source]

set default values