|
PISM, A Parallel Ice Sheet Model stable 0.4.1779
|
Forward problem for the map from yeild stress to velocities in the SSA. More...
#include <SSAFEM_Forward.hh>

Public Member Functions | |
| SSAFEM_Forward (IceGrid &g, IceBasalResistancePlasticLaw &b, IceFlowLaw &i, EnthalpyConverter &e, const NCConfigVariable &c) | |
| virtual | ~SSAFEM_Forward () |
| PetscErrorCode | allocate_ksp () |
| PetscErrorCode | deallocate_ksp () |
| PetscErrorCode | set_initial_velocity_guess (IceModelVec2V &v) |
| PetscErrorCode | set_tauc (IceModelVec2S &tauc) |
| PetscErrorCode | setup_vars () |
| PetscErrorCode | solveF (IceModelVec2V &result) |
| PetscErrorCode | solveT (IceModelVec2S &d, IceModelVec2V &result) |
| PetscErrorCode | solveTStar (IceModelVec2V &r, IceModelVec2S &result) |
| PetscErrorCode | domainIP (IceModelVec2S &a, IceModelVec2S &b, PetscScalar *OUTPUT) |
| PetscErrorCode | rangeIP (IceModelVec2V &a, IceModelVec2V &b, PetscScalar *OUTPUT) |
| PetscErrorCode | domainIP (Vec a, Vec b, PetscScalar *OUTPUT) |
| PetscErrorCode | rangeIP (Vec a, Vec b, PetscScalar *OUTPUT) |
Protected Member Functions | |
| PetscErrorCode | domainIP_core (PetscReal **A, PetscReal **B, PetscScalar *OUTPUT) |
| PetscErrorCode | rangeIP_core (PISMVector2 **A, PISMVector2 **B, PetscScalar *OUTPUT) |
| PetscErrorCode | solveF_core () |
| PetscErrorCode | assemble_T_matrix () |
| PetscErrorCode | assemble_DomainNorm_matrix () |
| PetscErrorCode | assemble_T_rhs (PISMVector2 **gvel, PetscReal **gdtau, PISMVector2 **grhs) |
| PetscErrorCode | assemble_TStarA_rhs (PISMVector2 **R, PISMVector2 **RHS) |
| PetscErrorCode | assemble_TStarB_rhs (PISMVector2 **Z, PISMVector2 **U, PetscScalar **RHS) |
Protected Attributes | |
| KSP | m_KSP |
| KSP | m_KSP_B |
| Mat | m_MatA |
| Matrices involved in T and T*. | |
| Mat | m_MatB |
| Vec | m_VecU |
| Vec | m_VecZ2 |
| Left- and right-hand side for linear vector problems. | |
| Vec | m_VecZ |
| Vec | m_VecRHS2 |
| Vec | m_VecV |
| Left- and right-hand side for linear scalar problems. | |
| Vec | m_VecRHS |
| bool | m_reassemble_T_matrix_needed |
| bool | m_forward_F_needed |
Forward problem for the map from yeild stress to velocities in the SSA.
Definition at line 25 of file SSAFEM_Forward.hh.
| SSAFEM_Forward | ( | IceGrid & | g, |
| IceBasalResistancePlasticLaw & | b, | ||
| IceFlowLaw & | i, | ||
| EnthalpyConverter & | e, | ||
| const NCConfigVariable & | c | ||
| ) | [inline] |
Definition at line 30 of file SSAFEM_Forward.hh.
References allocate_ksp().
| virtual ~SSAFEM_Forward | ( | ) | [inline, virtual] |
Definition at line 44 of file SSAFEM_Forward.hh.
References deallocate_ksp().
| PetscErrorCode allocate_ksp | ( | ) |
Definition at line 22 of file SSAFEM_Forward.cc.
References e, PISMComponent::grid, m_KSP, m_KSP_B, m_MatA, m_MatB, m_VecRHS, m_VecRHS2, m_VecU, m_VecV, m_VecZ, m_VecZ2, and SSA::SSADA.
Referenced by SSAFEM_Forward().
| PetscErrorCode assemble_DomainNorm_matrix | ( | ) | [protected] |
Definition at line 330 of file SSAFEM_Forward.cc.
References FEDOFMap::addLocalJacobianBlock(), SSAFEM::dofmap, SSAFEM::element_index, FEQuadrature::getWeightedJacobian(), PISMComponent::grid, m_MatB, FEQuadrature::Nk, FEQuadrature::Nq, SSAFEM::quadrature, FEDOFMap::reset(), FEQuadrature::testFunctionValues(), FEFunctionGerm::val, FEElementMap::xm, FEElementMap::xs, FEElementMap::ym, and FEElementMap::ys.
Referenced by setup_vars().
| PetscErrorCode assemble_T_matrix | ( | ) | [protected] |
Definition at line 316 of file SSAFEM_Forward.cc.
References SSAFEM::compute_local_jacobian(), m_MatA, m_VecU, and SSA::SSADA.
Referenced by solveT(), and solveTStar().
| PetscErrorCode assemble_T_rhs | ( | PISMVector2 ** | gvel, |
| PetscReal ** | gdtau, | ||
| PISMVector2 ** | grhs | ||
| ) | [protected] |
Definition at line 501 of file SSAFEM_Forward.cc.
References FEDOFMap::addLocalResidualBlock(), ShallowStressBalance::basal, ShallowStressBalance::bc_locations, FEQuadrature::computeTrialFunctionValues(), SSAFEM::dofmap, IceBasalResistancePlasticLaw::drag(), SSAFEM::element_index, FEDOFMap::extractLocalDOFs(), SSAFEM::feStore, FEElementMap::flatten(), FEQuadrature::getWeightedJacobian(), PISMComponent::grid, FEDOFMap::markColInvalid(), FEDOFMap::markRowInvalid(), FEStoreNode::mask, FEQuadrature::Nk, FEQuadrature::Nq, PismIntMask(), SSAFEM::quadrature, FEDOFMap::reset(), FEQuadrature::testFunctionValues(), exactV::v(), FEFunctionGerm::val, ShallowStressBalance::vel_bc, FEElementMap::xm, FEElementMap::xs, FEElementMap::ym, and FEElementMap::ys.
Referenced by solveT().
| PetscErrorCode assemble_TStarA_rhs | ( | PISMVector2 ** | R, |
| PISMVector2 ** | RHS | ||
| ) | [protected] |
Definition at line 616 of file SSAFEM_Forward.cc.
References FEDOFMap::addLocalResidualBlock(), ShallowStressBalance::bc_locations, FEQuadrature::computeTrialFunctionValues(), SSAFEM::dofmap, SSAFEM::element_index, FEDOFMap::extractLocalDOFs(), FEQuadrature::getWeightedJacobian(), PISMComponent::grid, FEDOFMap::markColInvalid(), FEDOFMap::markRowInvalid(), FEQuadrature::Nk, FEQuadrature::Nq, PismIntMask(), SSAFEM::quadrature, FEDOFMap::reset(), FEQuadrature::testFunctionValues(), FEFunctionGerm::val, ShallowStressBalance::vel_bc, FEElementMap::xm, FEElementMap::xs, FEElementMap::ym, and FEElementMap::ys.
Referenced by solveTStar().
| PetscErrorCode assemble_TStarB_rhs | ( | PISMVector2 ** | Z, |
| PISMVector2 ** | U, | ||
| PetscScalar ** | RHS | ||
| ) | [protected] |
Definition at line 718 of file SSAFEM_Forward.cc.
References FEDOFMap::addLocalResidualBlock(), ShallowStressBalance::basal, FEQuadrature::computeTrialFunctionValues(), SSAFEM::dofmap, IceBasalResistancePlasticLaw::drag(), SSAFEM::element_index, FEDOFMap::extractLocalDOFs(), SSAFEM::feStore, FEElementMap::flatten(), FEQuadrature::getWeightedJacobian(), PISMComponent::grid, FEStoreNode::mask, FEQuadrature::Nk, FEQuadrature::Nq, SSAFEM::quadrature, FEDOFMap::reset(), FEQuadrature::testFunctionValues(), exactV::v(), FEFunctionGerm::val, exactV::x, FEElementMap::xm, FEElementMap::xs, FEElementMap::ym, and FEElementMap::ys.
Referenced by solveTStar().
| PetscErrorCode deallocate_ksp | ( | ) |
| PetscErrorCode domainIP | ( | IceModelVec2S & | a, |
| IceModelVec2S & | b, | ||
| PetscScalar * | OUTPUT | ||
| ) |
Definition at line 392 of file SSAFEM_Forward.cc.
References domainIP_core().
| PetscErrorCode domainIP | ( | Vec | a, |
| Vec | b, | ||
| PetscScalar * | OUTPUT | ||
| ) |
Definition at line 381 of file SSAFEM_Forward.cc.
References domainIP_core(), and PISMComponent::grid.
Definition at line 428 of file SSAFEM_Forward.cc.
References FEQuadrature::computeTrialFunctionValues(), SSAFEM::dofmap, SSAFEM::element_index, FEQuadrature::getWeightedJacobian(), PISMComponent::grid, FEElementMap::lxm, FEElementMap::lxs, FEElementMap::lym, FEElementMap::lys, FEQuadrature::Nq, and SSAFEM::quadrature.
Referenced by domainIP().
| PetscErrorCode rangeIP | ( | IceModelVec2V & | a, |
| IceModelVec2V & | b, | ||
| PetscScalar * | OUTPUT | ||
| ) |
Definition at line 416 of file SSAFEM_Forward.cc.
References rangeIP_core().
| PetscErrorCode rangeIP | ( | Vec | a, |
| Vec | b, | ||
| PetscScalar * | OUTPUT | ||
| ) |
Definition at line 404 of file SSAFEM_Forward.cc.
References rangeIP_core(), and SSA::SSADA.
| PetscErrorCode rangeIP_core | ( | PISMVector2 ** | A, |
| PISMVector2 ** | B, | ||
| PetscScalar * | OUTPUT | ||
| ) | [protected] |
Definition at line 461 of file SSAFEM_Forward.cc.
References FEQuadrature::computeTrialFunctionValues(), SSAFEM::dofmap, SSAFEM::element_index, FEDOFMap::extractLocalDOFs(), FEQuadrature::getWeightedJacobian(), PISMComponent::grid, FEElementMap::lxm, FEElementMap::lxs, FEElementMap::lym, FEElementMap::lys, FEQuadrature::Nq, and SSAFEM::quadrature.
Referenced by rangeIP().
| PetscErrorCode set_initial_velocity_guess | ( | IceModelVec2V & | v | ) |
Definition at line 104 of file SSAFEM_Forward.cc.
References m_reassemble_T_matrix_needed, and SSA::SSAX.
| PetscErrorCode set_tauc | ( | IceModelVec2S & | tauc | ) |
Definition at line 121 of file SSAFEM_Forward.cc.
References FEQuadrature::computeTrialFunctionValues(), SSAFEM::dofmap, SSAFEM::element_index, SSAFEM::feStore, FEElementMap::flatten(), m_forward_F_needed, m_reassemble_T_matrix_needed, FEQuadrature::Nq, SSAFEM::quadrature, FEStoreNode::tauc, FEElementMap::xm, FEElementMap::xs, FEElementMap::ym, and FEElementMap::ys.
| PetscErrorCode setup_vars | ( | ) |
Definition at line 112 of file SSAFEM_Forward.cc.
References assemble_DomainNorm_matrix(), and SSAFEM::setup().
| PetscErrorCode solveF | ( | IceModelVec2V & | result | ) |
Definition at line 184 of file SSAFEM_Forward.cc.
References solveF_core(), and SSA::SSAX.
| PetscErrorCode solveF_core | ( | ) | [protected] |
Definition at line 149 of file SSAFEM_Forward.cc.
References SSAFEM::callback_data, SSAFEM_SNESCallbackData::da, PISMComponent::grid, SSAFEM::J, m_forward_F_needed, m_VecU, SSAFEM::r, SSAFEM::snes, SSAFEM_SNESCallbackData::ssa, SSA::SSADA, SSAFEM::SSAFEFunction, SSAFEM::SSAFEJacobian, and SSA::SSAX.
Referenced by solveF(), solveT(), and solveTStar().
| PetscErrorCode solveT | ( | IceModelVec2S & | d, |
| IceModelVec2V & | result | ||
| ) |
Definition at line 196 of file SSAFEM_Forward.cc.
References assemble_T_matrix(), assemble_T_rhs(), PISMComponent::grid, m_KSP, m_MatA, m_reassemble_T_matrix_needed, m_VecRHS2, m_VecU, m_VecZ2, solveF_core(), and SSA::SSADA.
| PetscErrorCode solveTStar | ( | IceModelVec2V & | r, |
| IceModelVec2S & | result | ||
| ) |
Definition at line 243 of file SSAFEM_Forward.cc.
References assemble_T_matrix(), assemble_TStarA_rhs(), assemble_TStarB_rhs(), PISMComponent::grid, m_KSP, m_KSP_B, m_MatA, m_MatB, m_reassemble_T_matrix_needed, m_VecRHS, m_VecRHS2, m_VecU, m_VecV, m_VecZ, m_VecZ2, solveF_core(), and SSA::SSADA.
bool m_forward_F_needed [protected] |
Definition at line 101 of file SSAFEM_Forward.hh.
Referenced by set_tauc(), and solveF_core().
KSP m_KSP [protected] |
Definition at line 92 of file SSAFEM_Forward.hh.
Referenced by allocate_ksp(), deallocate_ksp(), solveT(), and solveTStar().
KSP m_KSP_B [protected] |
Definition at line 92 of file SSAFEM_Forward.hh.
Referenced by allocate_ksp(), deallocate_ksp(), and solveTStar().
Mat m_MatA [protected] |
Matrices involved in T and T*.
Definition at line 94 of file SSAFEM_Forward.hh.
Referenced by allocate_ksp(), assemble_T_matrix(), deallocate_ksp(), solveT(), and solveTStar().
Mat m_MatB [protected] |
Definition at line 94 of file SSAFEM_Forward.hh.
Referenced by allocate_ksp(), assemble_DomainNorm_matrix(), deallocate_ksp(), and solveTStar().
bool m_reassemble_T_matrix_needed [protected] |
Definition at line 101 of file SSAFEM_Forward.hh.
Referenced by set_initial_velocity_guess(), set_tauc(), solveT(), and solveTStar().
Vec m_VecRHS [protected] |
Definition at line 99 of file SSAFEM_Forward.hh.
Referenced by allocate_ksp(), deallocate_ksp(), and solveTStar().
Vec m_VecRHS2 [protected] |
Definition at line 97 of file SSAFEM_Forward.hh.
Referenced by allocate_ksp(), deallocate_ksp(), solveT(), and solveTStar().
Vec m_VecU [protected] |
Definition at line 95 of file SSAFEM_Forward.hh.
Referenced by allocate_ksp(), assemble_T_matrix(), deallocate_ksp(), solveF_core(), solveT(), and solveTStar().
Vec m_VecV [protected] |
Left- and right-hand side for linear scalar problems.
Definition at line 99 of file SSAFEM_Forward.hh.
Referenced by allocate_ksp(), deallocate_ksp(), and solveTStar().
Vec m_VecZ [protected] |
Definition at line 97 of file SSAFEM_Forward.hh.
Referenced by allocate_ksp(), deallocate_ksp(), and solveTStar().
Vec m_VecZ2 [protected] |
Left- and right-hand side for linear vector problems.
Definition at line 97 of file SSAFEM_Forward.hh.
Referenced by allocate_ksp(), deallocate_ksp(), solveT(), and solveTStar().
1.7.3