Changeset 15771 for issm/trunk-jpl/src
- Timestamp:
- 08/09/13 10:59:47 (12 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 91 edited
- 17 moved
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/ad/validation/Update/SquareShelfConstrained.par
r10330 r15771 35 35 36 36 %Numerical parameters 37 md. diagnostic.viscosity_overshoot=0.0;37 md.stressbalance.viscosity_overshoot=0.0; 38 38 md.prognostic.stabilization=1; 39 39 md.thermal.stabilization=1; 40 40 md.verbose=verbose(0); 41 41 md.settings.waitonlock=30; 42 md. diagnostic.restol=0.05;43 md. diagnostic.reltol=0.05;42 md.stressbalance.restol=0.05; 43 md.stressbalance.reltol=0.05; 44 44 md.steadystate.reltol=0.05; 45 md. diagnostic.abstol=NaN;45 md.stressbalance.abstol=NaN; 46 46 md.timestepping.time_step=1; 47 47 md.timestepping.final_time=3; -
issm/trunk-jpl/src/c/Makefile.am
r15767 r15771 440 440 ./analyses/objectivefunction.cpp\ 441 441 ./analyses/gradient_core.cpp\ 442 ./analyses/adjoint diagnostic_core.cpp\442 ./analyses/adjointstressbalance_core.cpp\ 443 443 ./analyses/adjointbalancethickness_core.cpp\ 444 444 ./analyses/AdjointCorePointerFromSolutionEnum.cpp\ … … 465 465 ./solutionsequences/solutionsequence_hydro_nonlinear.cpp 466 466 #}}} 467 # Diagnosticsources {{{468 diagnostic_sources = ./modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp\469 ./modules/ModelProcessorx/ DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp \470 ./modules/ModelProcessorx/ DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp \471 ./modules/ModelProcessorx/ DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp\472 ./modules/ModelProcessorx/ DiagnosticVert/UpdateElementsDiagnosticVert.cpp\473 ./modules/ModelProcessorx/ DiagnosticVert/CreateNodesDiagnosticVert.cpp \474 ./modules/ModelProcessorx/ DiagnosticVert/CreateConstraintsDiagnosticVert.cpp \475 ./modules/ModelProcessorx/ DiagnosticVert/CreateLoadsDiagnosticVert.cpp\476 ./modules/ModelProcessorx/ DiagnosticHutter/UpdateElementsDiagnosticHutter.cpp\477 ./modules/ModelProcessorx/ DiagnosticHutter/CreateNodesDiagnosticHutter.cpp \478 ./modules/ModelProcessorx/ DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp \479 ./modules/ModelProcessorx/ DiagnosticHutter/CreateLoadsDiagnosticHutter.cpp \480 ./analyses/ diagnostic_core.cpp\467 #Stressbalance sources {{{ 468 stressbalance_sources = ./modules/ModelProcessorx/Stressbalance/UpdateElementsStressbalance.cpp\ 469 ./modules/ModelProcessorx/Stressbalance/CreateNodesStressbalance.cpp \ 470 ./modules/ModelProcessorx/Stressbalance/CreateConstraintsStressbalance.cpp \ 471 ./modules/ModelProcessorx/Stressbalance/CreateLoadsStressbalance.cpp\ 472 ./modules/ModelProcessorx/StressbalanceVertical/UpdateElementsStressbalanceVertical.cpp\ 473 ./modules/ModelProcessorx/StressbalanceVertical/CreateNodesStressbalanceVertical.cpp \ 474 ./modules/ModelProcessorx/StressbalanceVertical/CreateConstraintsStressbalanceVertical.cpp \ 475 ./modules/ModelProcessorx/StressbalanceVertical/CreateLoadsStressbalanceVertical.cpp\ 476 ./modules/ModelProcessorx/StressbalanceSIA/UpdateElementsStressbalanceSIA.cpp\ 477 ./modules/ModelProcessorx/StressbalanceSIA/CreateNodesStressbalanceSIA.cpp \ 478 ./modules/ModelProcessorx/StressbalanceSIA/CreateConstraintsStressbalanceSIA.cpp \ 479 ./modules/ModelProcessorx/StressbalanceSIA/CreateLoadsStressbalanceSIA.cpp \ 480 ./analyses/stressbalance_core.cpp\ 481 481 ./solutionsequences/solutionsequence_stokescoupling_nonlinear.cpp 482 482 #}}} … … 890 890 endif 891 891 892 if DIAGNOSTIC893 issm_sources += $( diagnostic_sources)892 if STRESSBALANCE 893 issm_sources += $(stressbalance_sources) 894 894 endif 895 895 -
issm/trunk-jpl/src/c/analyses/AdjointCorePointerFromSolutionEnum.cpp
r15339 r15771 23 23 switch(solutiontype){ 24 24 25 case DiagnosticSolutionEnum:26 adjointcore=&adjoint diagnostic_core;25 case StressbalanceSolutionEnum: 26 adjointcore=&adjointstressbalance_core; 27 27 break; 28 28 case SteadystateSolutionEnum: 29 adjointcore=&adjoint diagnostic_core;29 adjointcore=&adjointstressbalance_core; 30 30 break; 31 31 case BalancethicknessSolutionEnum: -
issm/trunk-jpl/src/c/analyses/AnalysisConfiguration.cpp
r15767 r15771 25 25 switch(solutiontype){ 26 26 27 case DiagnosticSolutionEnum:27 case StressbalanceSolutionEnum: 28 28 numanalyses=5; 29 29 analyses=xNew<int>(numanalyses); 30 analyses[0]= DiagnosticHorizAnalysisEnum;31 analyses[1]= DiagnosticVertAnalysisEnum;32 analyses[2]= DiagnosticSIAAnalysisEnum;30 analyses[0]=StressbalanceAnalysisEnum; 31 analyses[1]=StressbalanceVerticalAnalysisEnum; 32 analyses[2]=StressbalanceSIAAnalysisEnum; 33 33 analyses[3]=SurfaceSlopeAnalysisEnum; 34 34 analyses[4]=BedSlopeAnalysisEnum; … … 38 38 numanalyses=8; 39 39 analyses=xNew<int>(numanalyses); 40 analyses[0]= DiagnosticHorizAnalysisEnum;41 analyses[1]= DiagnosticVertAnalysisEnum;42 analyses[2]= DiagnosticSIAAnalysisEnum;40 analyses[0]=StressbalanceAnalysisEnum; 41 analyses[1]=StressbalanceVerticalAnalysisEnum; 42 analyses[2]=StressbalanceSIAAnalysisEnum; 43 43 analyses[3]=SurfaceSlopeAnalysisEnum; 44 44 analyses[4]=BedSlopeAnalysisEnum; … … 110 110 numanalyses=10-1; 111 111 analyses=xNew<int>(numanalyses); 112 analyses[0]= DiagnosticHorizAnalysisEnum;113 analyses[1]= DiagnosticVertAnalysisEnum;114 analyses[2]= DiagnosticSIAAnalysisEnum;112 analyses[0]=StressbalanceAnalysisEnum; 113 analyses[1]=StressbalanceVerticalAnalysisEnum; 114 analyses[2]=StressbalanceSIAAnalysisEnum; 115 115 analyses[3]=SurfaceSlopeAnalysisEnum; 116 116 analyses[4]=BedSlopeAnalysisEnum; -
issm/trunk-jpl/src/c/analyses/CorePointerFromSolutionEnum.cpp
r15767 r15771 23 23 switch(solutiontype){ 24 24 25 case DiagnosticSolutionEnum:26 #ifdef _HAVE_ DIAGNOSTIC_27 solutioncore=& diagnostic_core;25 case StressbalanceSolutionEnum: 26 #ifdef _HAVE_STRESSBALANCE_ 27 solutioncore=&stressbalance_core; 28 28 #else 29 _error_("ISSM was not compiled with diagnosticcapabilities. Exiting");29 _error_("ISSM was not compiled with stressbalance capabilities. Exiting"); 30 30 #endif 31 31 break; -
issm/trunk-jpl/src/c/analyses/adjointstressbalance_core.cpp
r15769 r15771 1 /*!\file: adjoint diagnostic_core.cpp1 /*!\file: adjointstressbalance_core.cpp 2 2 * \brief compute inverse method adjoint state 3 3 */ … … 10 10 #include "../solutionsequences/solutionsequences.h" 11 11 12 void adjoint diagnostic_core(FemModel* femmodel){12 void adjointstressbalance_core(FemModel* femmodel){ 13 13 14 14 /*parameters: */ … … 23 23 /*Compute velocities*/ 24 24 if(VerboseSolution()) _printf0_(" computing velocities\n"); 25 femmodel->SetCurrentConfiguration( DiagnosticHorizAnalysisEnum);25 femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum); 26 26 solutionsequence_nonlinear(femmodel,conserve_loads); 27 27 … … 31 31 /*Compute adjoint*/ 32 32 if(VerboseSolution()) _printf0_(" computing adjoint\n"); 33 femmodel->SetCurrentConfiguration( DiagnosticHorizAnalysisEnum,AdjointHorizAnalysisEnum);33 femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum,AdjointHorizAnalysisEnum); 34 34 solutionsequence_adjoint_linear(femmodel); 35 35 -
issm/trunk-jpl/src/c/analyses/analyses.h
r15767 r15771 17 17 18 18 /*cores: */ 19 void adjoint diagnostic_core(FemModel* femmodel);19 void adjointstressbalance_core(FemModel* femmodel); 20 20 void adjointbalancethickness_core(FemModel* femmodel); 21 21 void gradient_core(FemModel* femmodel,int n=0,bool orthogonalize=false); 22 void diagnostic_core(FemModel* femmodel);22 void stressbalance_core(FemModel* femmodel); 23 23 void hydrology_core(FemModel* femmodel); 24 24 void thermal_core(FemModel* femmodel); -
issm/trunk-jpl/src/c/analyses/control_core.cpp
r15564 r15771 112 112 solutioncore(femmodel); 113 113 114 /*some results not computed by steadystate_core or diagnostic_core: */114 /*some results not computed by steadystate_core or stressbalance_core: */ 115 115 if(!dakota_analysis){ //do not save this if we are running the control core from a qmu run! 116 116 for(i=0;i<num_controls;i++) InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,control_type[i]); -
issm/trunk-jpl/src/c/analyses/dakota_core.cpp
r15177 r15771 14 14 * 15 15 * Now, how does CPU 0 drive all other CPUS to carry out sensitivity analysese? By synchronizing its call to 16 * our ISSM cores ( diagnostic_core, thermal_core, transient_core, etc ...) on CPU 0 with all other CPUS.16 * our ISSM cores (stressbalance_core, thermal_core, transient_core, etc ...) on CPU 0 with all other CPUS. 17 17 * This explains the structure of qmu.cpp, where cpu 0 runs Dakota, the Dakota pluggin fires up DakotaSpawnCore.cpp, 18 18 * while the other CPUS are waiting for a broadcast from CPU0, once they get it, they also fire up -
issm/trunk-jpl/src/c/analyses/objectivefunction.cpp
r15564 r15771 37 37 38 38 /*set analysis type to compute velocity: */ 39 if (solution_type==SteadystateSolutionEnum || solution_type== DiagnosticSolutionEnum){40 femmodel->SetCurrentConfiguration( DiagnosticHorizAnalysisEnum);39 if (solution_type==SteadystateSolutionEnum || solution_type==StressbalanceSolutionEnum){ 40 femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum); 41 41 } 42 42 else if (solution_type==BalancethicknessSolutionEnum){ … … 53 53 InputControlUpdatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,search_scalar,false); 54 54 55 /*Run diagnosticwith updated inputs: */55 /*Run stressbalance with updated inputs: */ 56 56 if (solution_type==SteadystateSolutionEnum){ 57 diagnostic_core(femmodel); //We need a 3D velocity!! (vz is required for the next thermal run)57 stressbalance_core(femmodel); //We need a 3D velocity!! (vz is required for the next thermal run) 58 58 } 59 else if (solution_type== DiagnosticSolutionEnum){59 else if (solution_type==StressbalanceSolutionEnum){ 60 60 solutionsequence_nonlinear(femmodel,conserve_loads); 61 61 } -
issm/trunk-jpl/src/c/analyses/steadystate_core.cpp
r15727 r15771 64 64 65 65 if(VerboseSolution()) _printf0_(" computing new velocity\n"); 66 diagnostic_core(femmodel);66 stressbalance_core(femmodel); 67 67 GetSolutionFromInputsx(&ug,femmodel->elements, femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters); 68 68 -
issm/trunk-jpl/src/c/analyses/stressbalance_core.cpp
r15769 r15771 1 /*!\file: diagnostic_core.cpp2 * \brief: core of the diagnosticsolution1 /*!\file: stressbalance_core.cpp 2 * \brief: core of the stressbalance solution 3 3 */ 4 4 … … 10 10 #include "../solutionsequences/solutionsequences.h" 11 11 12 void diagnostic_core(FemModel* femmodel){12 void stressbalance_core(FemModel* femmodel){ 13 13 14 14 /*parameters: */ … … 30 30 femmodel->parameters->FindParam(&isHO,FlowequationIsHOEnum); 31 31 femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum); 32 femmodel->parameters->FindParam(&newton, DiagnosticIsnewtonEnum);32 femmodel->parameters->FindParam(&newton,StressbalanceIsnewtonEnum); 33 33 femmodel->parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum); 34 34 femmodel->parameters->FindParam(&save_results,SaveResultsEnum); 35 35 femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum); 36 femmodel->parameters->FindParam(&numoutputs, DiagnosticNumRequestedOutputsEnum);37 if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs, DiagnosticRequestedOutputsEnum);36 femmodel->parameters->FindParam(&numoutputs,StressbalanceNumRequestedOutputsEnum); 37 if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,StressbalanceRequestedOutputsEnum); 38 38 39 39 /*for qmu analysis, reinitialize velocity so that fake sensitivities do not show up as a result of a different restart of the convergence at each trial.*/ 40 if(dakota_analysis && solution_type== DiagnosticSolutionEnum){40 if(dakota_analysis && solution_type==StressbalanceSolutionEnum){ 41 41 InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVxEnum,VxEnum); 42 42 InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVyEnum,VyEnum); … … 49 49 if(isFS){ 50 50 bedslope_core(femmodel); 51 femmodel->SetCurrentConfiguration( DiagnosticHorizAnalysisEnum);51 femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum); 52 52 ResetCoordinateSystemx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 53 53 } … … 57 57 58 58 /*Take the last velocity into account so that the velocity on the SSA domain is not zero*/ 59 if(isSSA || isL1L2 || isHO ) ResetBoundaryConditions(femmodel, DiagnosticSIAAnalysisEnum);60 femmodel->SetCurrentConfiguration( DiagnosticSIAAnalysisEnum);59 if(isSSA || isL1L2 || isHO ) ResetBoundaryConditions(femmodel,StressbalanceSIAAnalysisEnum); 60 femmodel->SetCurrentConfiguration(StressbalanceSIAAnalysisEnum); 61 61 solutionsequence_linear(femmodel); 62 if(isSSA || isL1L2 || isHO) ResetBoundaryConditions(femmodel, DiagnosticHorizAnalysisEnum);62 if(isSSA || isL1L2 || isHO) ResetBoundaryConditions(femmodel,StressbalanceAnalysisEnum); 63 63 } 64 64 … … 66 66 if(VerboseSolution()) _printf0_(" computing velocities\n"); 67 67 68 femmodel->SetCurrentConfiguration( DiagnosticHorizAnalysisEnum);68 femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum); 69 69 if(newton>0) 70 70 solutionsequence_newton(femmodel); … … 80 80 if (dim==3 & (isSIA || isSSA || isL1L2 || isHO)){ 81 81 if(VerboseSolution()) _printf0_(" computing vertical velocities\n"); 82 femmodel->SetCurrentConfiguration( DiagnosticVertAnalysisEnum);82 femmodel->SetCurrentConfiguration(StressbalanceVerticalAnalysisEnum); 83 83 solutionsequence_linear(femmodel); 84 84 } … … 94 94 } 95 95 96 if(solution_type== DiagnosticSolutionEnum)femmodel->RequestedDependentsx();96 if(solution_type==StressbalanceSolutionEnum)femmodel->RequestedDependentsx(); 97 97 98 98 /*Free ressources:*/ -
issm/trunk-jpl/src/c/analyses/transient_core.cpp
r15767 r15771 21 21 /*parameters: */ 22 22 IssmDouble starttime,finaltime,dt,yts; 23 bool is diagnostic,ismasstransport,isthermal,isgroundingline,isenthalpy,isdelta18o,isgia;23 bool isstressbalance,ismasstransport,isthermal,isgroundingline,isenthalpy,isdelta18o,isgia; 24 24 bool save_results,dakota_analysis; 25 25 bool time_adapt=false; … … 42 42 femmodel->parameters->FindParam(&output_frequency,SettingsOutputFrequencyEnum); 43 43 femmodel->parameters->FindParam(&time_adapt,TimesteppingTimeAdaptEnum); 44 femmodel->parameters->FindParam(&is diagnostic,TransientIsdiagnosticEnum);44 femmodel->parameters->FindParam(&isstressbalance,TransientIsstressbalanceEnum); 45 45 femmodel->parameters->FindParam(&ismasstransport,TransientIsmasstransportEnum); 46 46 femmodel->parameters->FindParam(&isthermal,TransientIsthermalEnum); … … 117 117 } 118 118 119 if(is diagnostic){119 if(isstressbalance){ 120 120 if(VerboseSolution()) _printf0_(" computing new velocity\n"); 121 #ifdef _HAVE_ DIAGNOSTIC_122 diagnostic_core(femmodel);121 #ifdef _HAVE_STRESSBALANCE_ 122 stressbalance_core(femmodel); 123 123 #else 124 _error_("ISSM was not compiled with diagnosticcapabilities. Exiting");124 _error_("ISSM was not compiled with stressbalance capabilities. Exiting"); 125 125 #endif 126 126 } -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r15770 r15771 184 184 185 185 /*Build friction element, needed later: */ 186 friction=new Friction("3d",inputs,matpar, DiagnosticHorizAnalysisEnum);186 friction=new Friction("3d",inputs,matpar,StressbalanceAnalysisEnum); 187 187 188 188 /* Start looping on the number of gauss 2d (nodes on the bedrock) */ … … 233 233 234 234 /*Check analysis_types*/ 235 if (analysis_type!= DiagnosticHorizAnalysisEnum) _error_("Not supported yet!");235 if (analysis_type!=StressbalanceAnalysisEnum) _error_("Not supported yet!"); 236 236 if (approximation!=FSApproximationEnum) _error_("Not supported yet!"); 237 237 238 238 /*retrieve some parameters: */ 239 this->parameters->FindParam(&FSreconditioning, DiagnosticFSreconditioningEnum);239 this->parameters->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum); 240 240 241 241 if(!IsOnBed()){ … … 403 403 int analysis_type; 404 404 parameters->FindParam(&analysis_type,AnalysisTypeEnum); 405 if(analysis_type== DiagnosticHorizAnalysisEnum){405 if(analysis_type==StressbalanceAnalysisEnum){ 406 406 int approximation; 407 407 inputs->GetInputValue(&approximation,ApproximationEnum); … … 450 450 /*Just branch to the correct element stiffness matrix generator, according to the type of analysis we are carrying out: */ 451 451 switch(analysis_type){ 452 #ifdef _HAVE_ DIAGNOSTIC_453 case DiagnosticHorizAnalysisEnum:454 return CreateKMatrix DiagnosticHoriz();452 #ifdef _HAVE_STRESSBALANCE_ 453 case StressbalanceAnalysisEnum: 454 return CreateKMatrixStressbalanceHoriz(); 455 455 break; 456 456 case AdjointHorizAnalysisEnum: 457 457 return CreateKMatrixAdjointHoriz(); 458 458 break; 459 case DiagnosticSIAAnalysisEnum:460 return CreateKMatrix DiagnosticSIA();459 case StressbalanceSIAAnalysisEnum: 460 return CreateKMatrixStressbalanceSIA(); 461 461 break; 462 case DiagnosticVertAnalysisEnum:463 return CreateKMatrix DiagnosticVert();462 case StressbalanceVerticalAnalysisEnum: 463 return CreateKMatrixStressbalanceVert(); 464 464 break; 465 465 #endif … … 550 550 551 551 switch(analysis_type){ 552 #ifdef _HAVE_ DIAGNOSTIC_553 case DiagnosticHorizAnalysisEnum:554 De=CreateDVector DiagnosticHoriz();552 #ifdef _HAVE_STRESSBALANCE_ 553 case StressbalanceAnalysisEnum: 554 De=CreateDVectorStressbalanceHoriz(); 555 555 break; 556 556 #endif … … 576 576 int analysis_type; 577 577 parameters->FindParam(&analysis_type,AnalysisTypeEnum); 578 if(analysis_type== DiagnosticHorizAnalysisEnum){578 if(analysis_type==StressbalanceAnalysisEnum){ 579 579 /*StaticCondensation if requested*/ 580 580 if(this->element_type==MINIcondensedEnum){ … … 588 588 589 589 this->element_type=MINIEnum; 590 ElementMatrix* Ke = CreateKMatrix DiagnosticFS();590 ElementMatrix* Ke = CreateKMatrixStressbalanceFS(); 591 591 this->element_type=MINIcondensedEnum; 592 592 … … 633 633 /*Just branch to the correct element stiffness matrix generator, according to the type of analysis we are carrying out: */ 634 634 switch(analysis_type){ 635 #ifdef _HAVE_ DIAGNOSTIC_636 case DiagnosticHorizAnalysisEnum:637 return CreatePVector DiagnosticHoriz();635 #ifdef _HAVE_STRESSBALANCE_ 636 case StressbalanceAnalysisEnum: 637 return CreatePVectorStressbalanceHoriz(); 638 638 break; 639 case DiagnosticSIAAnalysisEnum:640 return CreatePVector DiagnosticSIA();639 case StressbalanceSIAAnalysisEnum: 640 return CreatePVectorStressbalanceSIA(); 641 641 break; 642 case DiagnosticVertAnalysisEnum:643 return CreatePVector DiagnosticVert();642 case StressbalanceVerticalAnalysisEnum: 643 return CreatePVectorStressbalanceVert(); 644 644 break; 645 645 #endif … … 740 740 /*Just branch to the correct element stiffness matrix generator, according to the type of analysis we are carrying out: */ 741 741 switch(analysis_type){ 742 #ifdef _HAVE_ DIAGNOSTIC_743 case DiagnosticHorizAnalysisEnum:744 Ke=CreateJacobian DiagnosticHoriz();742 #ifdef _HAVE_STRESSBALANCE_ 743 case StressbalanceAnalysisEnum: 744 Ke=CreateJacobianStressbalanceHoriz(); 745 745 break; 746 746 #endif … … 1379 1379 /*Just branch to the correct InputUpdateFromSolution generator, according to the type of analysis we are carrying out: */ 1380 1380 switch(analysis_type){ 1381 #ifdef _HAVE_ DIAGNOSTIC_1382 case DiagnosticHorizAnalysisEnum:1381 #ifdef _HAVE_STRESSBALANCE_ 1382 case StressbalanceAnalysisEnum: 1383 1383 int approximation; 1384 1384 inputs->GetInputValue(&approximation,ApproximationEnum); 1385 1385 if(approximation==FSApproximationEnum || approximation==NoneApproximationEnum){ 1386 GetSolutionFromInputs DiagnosticFS(solution);1386 GetSolutionFromInputsStressbalanceFS(solution); 1387 1387 } 1388 1388 else if (approximation==SSAApproximationEnum || approximation==HOApproximationEnum || approximation==SIAApproximationEnum){ 1389 GetSolutionFromInputs DiagnosticHoriz(solution);1389 GetSolutionFromInputsStressbalanceHoriz(solution); 1390 1390 } 1391 1391 else if (approximation==SSAHOApproximationEnum || approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){ … … 1393 1393 } 1394 1394 break; 1395 case DiagnosticSIAAnalysisEnum:1396 GetSolutionFromInputs DiagnosticSIA(solution);1395 case StressbalanceSIAAnalysisEnum: 1396 GetSolutionFromInputsStressbalanceSIA(solution); 1397 1397 break; 1398 case DiagnosticVertAnalysisEnum:1399 //GetSolutionFromInputs DiagnosticVert(solution);1398 case StressbalanceVerticalAnalysisEnum: 1399 //GetSolutionFromInputsStressbalanceVert(solution); 1400 1400 GetSolutionFromInputsOneDof(solution, VzEnum); 1401 1401 break; … … 2214 2214 /*Just branch to the correct InputUpdateFromSolution generator, according to the type of analysis we are carrying out: */ 2215 2215 switch(analysis_type){ 2216 #ifdef _HAVE_ DIAGNOSTIC_2217 case DiagnosticHorizAnalysisEnum:2218 InputUpdateFromSolution DiagnosticHoriz( solution);2216 #ifdef _HAVE_STRESSBALANCE_ 2217 case StressbalanceAnalysisEnum: 2218 InputUpdateFromSolutionStressbalanceHoriz( solution); 2219 2219 break; 2220 case DiagnosticSIAAnalysisEnum:2221 InputUpdateFromSolution DiagnosticSIA( solution);2220 case StressbalanceSIAAnalysisEnum: 2221 InputUpdateFromSolutionStressbalanceSIA( solution); 2222 2222 break; 2223 case DiagnosticVertAnalysisEnum:2224 InputUpdateFromSolution DiagnosticVert( solution);2223 case StressbalanceVerticalAnalysisEnum: 2224 InputUpdateFromSolutionStressbalanceVert( solution); 2225 2225 break; 2226 2226 #endif … … 3073 3073 int analysis_type,approximation,numlayers; 3074 3074 parameters->FindParam(&analysis_type,AnalysisTypeEnum); 3075 if(analysis_type== DiagnosticHorizAnalysisEnum){3075 if(analysis_type==StressbalanceAnalysisEnum){ 3076 3076 inputs->GetInputValue(&approximation,ApproximationEnum); 3077 3077 if(approximation==SSAHOApproximationEnum || approximation==SSAFSApproximationEnum){ … … 3450 3450 switch(analysis_type){ 3451 3451 3452 case DiagnosticHorizAnalysisEnum:3452 case StressbalanceAnalysisEnum: 3453 3453 3454 3454 /*default vx,vy and vz: either observation or 0 */ … … 5138 5138 /*Initialize Jacobian with regular HO (first part of the Gateau derivative)*/ 5139 5139 parameters->FindParam(&incomplete_adjoint,InversionIncompleteAdjointEnum); 5140 ElementMatrix* Ke=CreateKMatrix DiagnosticHO();5140 ElementMatrix* Ke=CreateKMatrixStressbalanceHO(); 5141 5141 if(incomplete_adjoint) return Ke; 5142 5142 … … 5203 5203 /*Initialize Jacobian with regular FS (first part of the Gateau derivative)*/ 5204 5204 parameters->FindParam(&incomplete_adjoint,InversionIncompleteAdjointEnum); 5205 ElementMatrix* Ke=CreateKMatrix DiagnosticFS();5205 ElementMatrix* Ke=CreateKMatrixStressbalanceFS(); 5206 5206 if(incomplete_adjoint) return Ke; 5207 5207 … … 6112 6112 6113 6113 /*Recondition pressure and compute vel: */ 6114 this->parameters->FindParam(&FSreconditioning, DiagnosticFSreconditioningEnum);6114 this->parameters->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum); 6115 6115 for(i=0;i<pnumnodes;i++) lambdap[i]=lambdap[i]*FSreconditioning; 6116 6116 … … 6622 6622 #endif 6623 6623 6624 #ifdef _HAVE_ DIAGNOSTIC_6625 /*FUNCTION Penta::CreateDVector DiagnosticHoriz {{{*/6626 ElementVector* Penta::CreateDVector DiagnosticHoriz(void){6624 #ifdef _HAVE_STRESSBALANCE_ 6625 /*FUNCTION Penta::CreateDVectorStressbalanceHoriz {{{*/ 6626 ElementVector* Penta::CreateDVectorStressbalanceHoriz(void){ 6627 6627 6628 6628 int approximation; … … 6631 6631 switch(approximation){ 6632 6632 case FSApproximationEnum: 6633 return CreateDVector DiagnosticFS();6633 return CreateDVectorStressbalanceFS(); 6634 6634 default: 6635 6635 return NULL; //no need for doftypes outside of FS approximation … … 6637 6637 } 6638 6638 /*}}}*/ 6639 /*FUNCTION Penta::CreateDVector DiagnosticFS{{{*/6640 ElementVector* Penta::CreateDVector DiagnosticFS(void){6639 /*FUNCTION Penta::CreateDVectorStressbalanceFS{{{*/ 6640 ElementVector* Penta::CreateDVectorStressbalanceFS(void){ 6641 6641 6642 6642 /*output: */ … … 6726 6726 /* Get node coordinates and dof list: */ 6727 6727 GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 6728 this->parameters->FindParam(&viscosity_overshoot, DiagnosticViscosityOvershootEnum);6728 this->parameters->FindParam(&viscosity_overshoot,StressbalanceViscosityOvershootEnum); 6729 6729 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 6730 6730 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); … … 6933 6933 /* Get node coordinates and dof list: */ 6934 6934 GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 6935 parameters->FindParam(&FSreconditioning, DiagnosticFSreconditioningEnum);6935 parameters->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum); 6936 6936 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 6937 6937 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); … … 7043 7043 GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 7044 7044 parameters->FindParam(&analysis_type,AnalysisTypeEnum); 7045 parameters->FindParam(&FSreconditioning, DiagnosticFSreconditioningEnum);7045 parameters->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum); 7046 7046 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 7047 7047 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); … … 7131 7131 /*Compute HO Matrix with P1 element type\n");*/ 7132 7132 this->element_type=P1Enum; 7133 Ke1=CreateKMatrix DiagnosticHO();7133 Ke1=CreateKMatrixStressbalanceHO(); 7134 7134 this->element_type=init; 7135 7135 /*Compute FS Matrix and condense it \n");*/ 7136 Ke2=CreateKMatrix DiagnosticFS();7136 Ke2=CreateKMatrixStressbalanceFS(); 7137 7137 int indices[3]={18,19,20}; 7138 7138 Ke2->StaticCondensation(3,&indices[0]); … … 7156 7156 } 7157 7157 //*}}}*/ 7158 /*FUNCTION Penta::CreateKMatrix DiagnosticHoriz {{{*/7159 ElementMatrix* Penta::CreateKMatrix DiagnosticHoriz(void){7158 /*FUNCTION Penta::CreateKMatrixStressbalanceHoriz {{{*/ 7159 ElementMatrix* Penta::CreateKMatrixStressbalanceHoriz(void){ 7160 7160 7161 7161 int approximation; … … 7163 7163 switch(approximation){ 7164 7164 case SSAApproximationEnum: 7165 return CreateKMatrix DiagnosticSSA2d();7165 return CreateKMatrixStressbalanceSSA2d(); 7166 7166 case L1L2ApproximationEnum: 7167 return CreateKMatrix DiagnosticL1L2();7167 return CreateKMatrixStressbalanceL1L2(); 7168 7168 case HOApproximationEnum: 7169 return CreateKMatrix DiagnosticHO();7169 return CreateKMatrixStressbalanceHO(); 7170 7170 case FSApproximationEnum: 7171 return CreateKMatrix DiagnosticFS();7171 return CreateKMatrixStressbalanceFS(); 7172 7172 case SIAApproximationEnum: 7173 7173 return NULL; … … 7175 7175 return NULL; 7176 7176 case SSAHOApproximationEnum: 7177 return CreateKMatrix DiagnosticSSAHO();7177 return CreateKMatrixStressbalanceSSAHO(); 7178 7178 case SSAFSApproximationEnum: 7179 return CreateKMatrix DiagnosticSSAFS();7179 return CreateKMatrixStressbalanceSSAFS(); 7180 7180 case HOFSApproximationEnum: 7181 return CreateKMatrix DiagnosticHOFS();7181 return CreateKMatrixStressbalanceHOFS(); 7182 7182 default: 7183 7183 _error_("Approximation " << EnumToStringx(approximation) << " not supported yet"); … … 7185 7185 } 7186 7186 /*}}}*/ 7187 /*FUNCTION Penta::CreateKMatrix DiagnosticSIA{{{*/7188 ElementMatrix* Penta::CreateKMatrix DiagnosticSIA(void){7187 /*FUNCTION Penta::CreateKMatrixStressbalanceSIA{{{*/ 7188 ElementMatrix* Penta::CreateKMatrixStressbalanceSIA(void){ 7189 7189 7190 7190 /*Intermediaries*/ … … 7248 7248 return Ke; 7249 7249 }/*}}}*/ 7250 /*FUNCTION Penta::CreateKMatrix DiagnosticSSA2d{{{*/7251 ElementMatrix* Penta::CreateKMatrix DiagnosticSSA2d(void){7250 /*FUNCTION Penta::CreateKMatrixStressbalanceSSA2d{{{*/ 7251 ElementMatrix* Penta::CreateKMatrixStressbalanceSSA2d(void){ 7252 7252 7253 7253 /*Figure out if this penta is collapsed. If so, then bailout, except if it is at the … … 7271 7271 /*Call Tria function*/ 7272 7272 Tria* tria=(Tria*)SpawnTria(0); //lower face is 0, upper face is 1. 7273 ElementMatrix* Ke=tria->CreateKMatrix DiagnosticSSA();7273 ElementMatrix* Ke=tria->CreateKMatrixStressbalanceSSA(); 7274 7274 delete tria->material; delete tria; 7275 7275 … … 7282 7282 } 7283 7283 /*}}}*/ 7284 /*FUNCTION Penta::CreateKMatrix DiagnosticSSA3d{{{*/7285 ElementMatrix* Penta::CreateKMatrix DiagnosticSSA3d(void){7284 /*FUNCTION Penta::CreateKMatrixStressbalanceSSA3d{{{*/ 7285 ElementMatrix* Penta::CreateKMatrixStressbalanceSSA3d(void){ 7286 7286 7287 7287 /*compute all stiffness matrices for this element*/ 7288 ElementMatrix* Ke1=CreateKMatrix DiagnosticSSA3dViscous();7289 ElementMatrix* Ke2=CreateKMatrix DiagnosticSSA3dFriction();7288 ElementMatrix* Ke1=CreateKMatrixStressbalanceSSA3dViscous(); 7289 ElementMatrix* Ke2=CreateKMatrixStressbalanceSSA3dFriction(); 7290 7290 ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2); 7291 7291 … … 7296 7296 } 7297 7297 /*}}}*/ 7298 /*FUNCTION Penta::CreateKMatrix DiagnosticSSA3dViscous{{{*/7299 ElementMatrix* Penta::CreateKMatrix DiagnosticSSA3dViscous(void){7298 /*FUNCTION Penta::CreateKMatrixStressbalanceSSA3dViscous{{{*/ 7299 ElementMatrix* Penta::CreateKMatrixStressbalanceSSA3dViscous(void){ 7300 7300 7301 7301 /*Constants*/ … … 7329 7329 /*Retrieve all inputs and parameters*/ 7330 7330 GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 7331 this->parameters->FindParam(&viscosity_overshoot, DiagnosticViscosityOvershootEnum);7331 this->parameters->FindParam(&viscosity_overshoot,StressbalanceViscosityOvershootEnum); 7332 7332 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 7333 7333 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); … … 7384 7384 } 7385 7385 /*}}}*/ 7386 /*FUNCTION Penta::CreateKMatrix DiagnosticSSA3dFriction{{{*/7387 ElementMatrix* Penta::CreateKMatrix DiagnosticSSA3dFriction(void){7386 /*FUNCTION Penta::CreateKMatrixStressbalanceSSA3dFriction{{{*/ 7387 ElementMatrix* Penta::CreateKMatrixStressbalanceSSA3dFriction(void){ 7388 7388 7389 7389 /*Initialize Element matrix and return if necessary*/ … … 7394 7394 * nodes: */ 7395 7395 Tria* tria=(Tria*)SpawnTria(0); //lower face is 0, upper face is 1. 7396 ElementMatrix* Ke=tria->CreateKMatrix DiagnosticSSAFriction();7396 ElementMatrix* Ke=tria->CreateKMatrixStressbalanceSSAFriction(); 7397 7397 delete tria->material; delete tria; 7398 7398 … … 7401 7401 } 7402 7402 /*}}}*/ 7403 /*FUNCTION Penta::CreateKMatrix DiagnosticSSAHO{{{*/7404 ElementMatrix* Penta::CreateKMatrix DiagnosticSSAHO(void){7403 /*FUNCTION Penta::CreateKMatrixStressbalanceSSAHO{{{*/ 7404 ElementMatrix* Penta::CreateKMatrixStressbalanceSSAHO(void){ 7405 7405 7406 7406 /*compute all stiffness matrices for this element*/ 7407 ElementMatrix* Ke1=CreateKMatrix DiagnosticSSA3d();7408 ElementMatrix* Ke2=CreateKMatrix DiagnosticHO();7407 ElementMatrix* Ke1=CreateKMatrixStressbalanceSSA3d(); 7408 ElementMatrix* Ke2=CreateKMatrixStressbalanceHO(); 7409 7409 ElementMatrix* Ke3=CreateKMatrixCouplingSSAHO(); 7410 7410 ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2,Ke3); … … 7417 7417 } 7418 7418 /*}}}*/ 7419 /*FUNCTION Penta::CreateKMatrix DiagnosticSSAFS{{{*/7420 ElementMatrix* Penta::CreateKMatrix DiagnosticSSAFS(void){7419 /*FUNCTION Penta::CreateKMatrixStressbalanceSSAFS{{{*/ 7420 ElementMatrix* Penta::CreateKMatrixStressbalanceSSAFS(void){ 7421 7421 7422 7422 /*compute all stiffness matrices for this element*/ 7423 ElementMatrix* Ke1=CreateKMatrix DiagnosticFS();7423 ElementMatrix* Ke1=CreateKMatrixStressbalanceFS(); 7424 7424 int indices[3]={18,19,20}; 7425 7425 Ke1->StaticCondensation(3,&indices[0]); 7426 7426 int init = this->element_type; 7427 7427 this->element_type=P1Enum; //P1 needed for HO 7428 ElementMatrix* Ke2=CreateKMatrix DiagnosticSSA3d();7428 ElementMatrix* Ke2=CreateKMatrixStressbalanceSSA3d(); 7429 7429 this->element_type=init; 7430 7430 ElementMatrix* Ke3=CreateKMatrixCouplingSSAFS(); … … 7438 7438 } 7439 7439 /*}}}*/ 7440 /*FUNCTION Penta::CreateKMatrix DiagnosticL1L2{{{*/7441 ElementMatrix* Penta::CreateKMatrix DiagnosticL1L2(void){7440 /*FUNCTION Penta::CreateKMatrixStressbalanceL1L2{{{*/ 7441 ElementMatrix* Penta::CreateKMatrixStressbalanceL1L2(void){ 7442 7442 7443 7443 /*compute all stiffness matrices for this element*/ 7444 ElementMatrix* Ke1=CreateKMatrix DiagnosticL1L2Viscous();7445 ElementMatrix* Ke2=CreateKMatrix DiagnosticL1L2Friction();7444 ElementMatrix* Ke1=CreateKMatrixStressbalanceL1L2Viscous(); 7445 ElementMatrix* Ke2=CreateKMatrixStressbalanceL1L2Friction(); 7446 7446 ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2); 7447 7447 … … 7452 7452 } 7453 7453 /*}}}*/ 7454 /*FUNCTION Penta::CreateKMatrix DiagnosticL1L2Viscous{{{*/7455 ElementMatrix* Penta::CreateKMatrix DiagnosticL1L2Viscous(void){7454 /*FUNCTION Penta::CreateKMatrixStressbalanceL1L2Viscous{{{*/ 7455 ElementMatrix* Penta::CreateKMatrixStressbalanceL1L2Viscous(void){ 7456 7456 7457 7457 /*Constants*/ … … 7520 7520 } 7521 7521 /*}}}*/ 7522 /*FUNCTION Penta::CreateKMatrix DiagnosticL1L2Friction{{{*/7523 ElementMatrix* Penta::CreateKMatrix DiagnosticL1L2Friction(void){7522 /*FUNCTION Penta::CreateKMatrixStressbalanceL1L2Friction{{{*/ 7523 ElementMatrix* Penta::CreateKMatrixStressbalanceL1L2Friction(void){ 7524 7524 7525 7525 /*Initialize Element matrix and return if necessary*/ … … 7530 7530 * nodes: */ 7531 7531 Tria* tria=(Tria*)SpawnTria(0); //lower face is 0, upper face is 1. 7532 ElementMatrix* Ke=tria->CreateKMatrix DiagnosticSSAFriction();7532 ElementMatrix* Ke=tria->CreateKMatrixStressbalanceSSAFriction(); 7533 7533 delete tria->material; delete tria; 7534 7534 … … 7537 7537 } 7538 7538 /*}}}*/ 7539 /*FUNCTION Penta::CreateKMatrix DiagnosticHO{{{*/7540 ElementMatrix* Penta::CreateKMatrix DiagnosticHO(void){7539 /*FUNCTION Penta::CreateKMatrixStressbalanceHO{{{*/ 7540 ElementMatrix* Penta::CreateKMatrixStressbalanceHO(void){ 7541 7541 7542 7542 /*compute all stiffness matrices for this element*/ 7543 ElementMatrix* Ke1=CreateKMatrix DiagnosticHOViscous();7544 ElementMatrix* Ke2=CreateKMatrix DiagnosticHOFriction();7543 ElementMatrix* Ke1=CreateKMatrixStressbalanceHOViscous(); 7544 ElementMatrix* Ke2=CreateKMatrixStressbalanceHOFriction(); 7545 7545 ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2); 7546 7546 … … 7552 7552 } 7553 7553 /*}}}*/ 7554 /*FUNCTION Penta::CreateKMatrix DiagnosticHOViscous{{{*/7555 ElementMatrix* Penta::CreateKMatrix DiagnosticHOViscous(void){7554 /*FUNCTION Penta::CreateKMatrixStressbalanceHOViscous{{{*/ 7555 ElementMatrix* Penta::CreateKMatrixStressbalanceHOViscous(void){ 7556 7556 7557 7557 /*Intermediaries */ … … 7578 7578 inputs->GetInputValue(&approximation,ApproximationEnum); 7579 7579 GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 7580 this->parameters->FindParam(&viscosity_overshoot, DiagnosticViscosityOvershootEnum);7580 this->parameters->FindParam(&viscosity_overshoot,StressbalanceViscosityOvershootEnum); 7581 7581 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 7582 7582 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); … … 7620 7620 } 7621 7621 /*}}}*/ 7622 /*FUNCTION Penta::CreateKMatrix DiagnosticHOFriction{{{*/7623 ElementMatrix* Penta::CreateKMatrix DiagnosticHOFriction(void){7622 /*FUNCTION Penta::CreateKMatrixStressbalanceHOFriction{{{*/ 7623 ElementMatrix* Penta::CreateKMatrixStressbalanceHOFriction(void){ 7624 7624 7625 7625 /*Intermediaries */ … … 7694 7694 } 7695 7695 /*}}}*/ 7696 /*FUNCTION Penta::CreateKMatrix DiagnosticHOFS{{{*/7697 ElementMatrix* Penta::CreateKMatrix DiagnosticHOFS(void){7696 /*FUNCTION Penta::CreateKMatrixStressbalanceHOFS{{{*/ 7697 ElementMatrix* Penta::CreateKMatrixStressbalanceHOFS(void){ 7698 7698 7699 7699 /*compute all stiffness matrices for this element*/ 7700 ElementMatrix* Ke1=CreateKMatrix DiagnosticFS();7700 ElementMatrix* Ke1=CreateKMatrixStressbalanceFS(); 7701 7701 int indices[3]={18,19,20}; 7702 7702 Ke1->StaticCondensation(3,&indices[0]); 7703 7703 int init = this->element_type; 7704 7704 this->element_type=P1Enum; //P1 needed for HO 7705 ElementMatrix* Ke2=CreateKMatrix DiagnosticHO();7705 ElementMatrix* Ke2=CreateKMatrixStressbalanceHO(); 7706 7706 this->element_type=init; 7707 7707 ElementMatrix* Ke3=CreateKMatrixCouplingHOFS(); … … 7715 7715 } 7716 7716 /*}}}*/ 7717 /*FUNCTION Penta::CreateKMatrix DiagnosticFS{{{*/7718 ElementMatrix* Penta::CreateKMatrix DiagnosticFS(void){7717 /*FUNCTION Penta::CreateKMatrixStressbalanceFS{{{*/ 7718 ElementMatrix* Penta::CreateKMatrixStressbalanceFS(void){ 7719 7719 7720 7720 ElementMatrix* Ke1 = NULL; … … 7723 7723 7724 7724 /*compute all stiffness matrices for this element*/ 7725 Ke1=CreateKMatrix DiagnosticFSViscous();7726 Ke2=CreateKMatrix DiagnosticFSFriction();7725 Ke1=CreateKMatrixStressbalanceFSViscous(); 7726 Ke2=CreateKMatrixStressbalanceFSFriction(); 7727 7727 Ke =new ElementMatrix(Ke1,Ke2); 7728 7728 … … 7767 7767 /*Retrieve all inputs and parameters*/ 7768 7768 GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 7769 parameters->FindParam(&FSreconditioning, DiagnosticFSreconditioningEnum);7769 parameters->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum); 7770 7770 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 7771 7771 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); … … 7848 7848 } 7849 7849 /*}}}*/ 7850 /*FUNCTION Penta::CreateKMatrix DiagnosticFSViscous {{{*/7851 ElementMatrix* Penta::CreateKMatrix DiagnosticFSViscous(void){7850 /*FUNCTION Penta::CreateKMatrixStressbalanceFSViscous {{{*/ 7851 ElementMatrix* Penta::CreateKMatrixStressbalanceFSViscous(void){ 7852 7852 7853 7853 /*Intermediaries */ … … 7880 7880 /*Retrieve all inputs and parameters*/ 7881 7881 GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 7882 parameters->FindParam(&FSreconditioning, DiagnosticFSreconditioningEnum);7882 parameters->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum); 7883 7883 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 7884 7884 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); … … 7920 7920 } 7921 7921 /*}}}*/ 7922 /*FUNCTION Penta::CreateKMatrix DiagnosticFSFriction{{{*/7923 ElementMatrix* Penta::CreateKMatrix DiagnosticFSFriction(void){7922 /*FUNCTION Penta::CreateKMatrixStressbalanceFSFriction{{{*/ 7923 ElementMatrix* Penta::CreateKMatrixStressbalanceFSFriction(void){ 7924 7924 7925 7925 /*Intermediaries */ … … 7954 7954 GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 7955 7955 parameters->FindParam(&analysis_type,AnalysisTypeEnum); 7956 parameters->FindParam(&FSreconditioning, DiagnosticFSreconditioningEnum);7956 parameters->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum); 7957 7957 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 7958 7958 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); … … 7997 7997 } 7998 7998 /*}}}*/ 7999 /*FUNCTION Penta::CreateKMatrix DiagnosticVert {{{*/8000 ElementMatrix* Penta::CreateKMatrix DiagnosticVert(void){7999 /*FUNCTION Penta::CreateKMatrixStressbalanceVert {{{*/ 8000 ElementMatrix* Penta::CreateKMatrixStressbalanceVert(void){ 8001 8001 8002 8002 /*compute all stiffness matrices for this element*/ 8003 ElementMatrix* Ke1=CreateKMatrix DiagnosticVertVolume();8004 ElementMatrix* Ke2=CreateKMatrix DiagnosticVertSurface();8003 ElementMatrix* Ke1=CreateKMatrixStressbalanceVertVolume(); 8004 ElementMatrix* Ke2=CreateKMatrixStressbalanceVertSurface(); 8005 8005 ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2); 8006 8006 … … 8012 8012 } 8013 8013 /*}}}*/ 8014 /*FUNCTION Penta::CreateKMatrix DiagnosticVertVolume {{{*/8015 ElementMatrix* Penta::CreateKMatrix DiagnosticVertVolume(void){8014 /*FUNCTION Penta::CreateKMatrixStressbalanceVertVolume {{{*/ 8015 ElementMatrix* Penta::CreateKMatrixStressbalanceVertVolume(void){ 8016 8016 8017 8017 /*Intermediaries */ … … 8052 8052 } 8053 8053 /*}}}*/ 8054 /*FUNCTION Penta::CreateKMatrix DiagnosticVertSurface {{{*/8055 ElementMatrix* Penta::CreateKMatrix DiagnosticVertSurface(void){8054 /*FUNCTION Penta::CreateKMatrixStressbalanceVertSurface {{{*/ 8055 ElementMatrix* Penta::CreateKMatrixStressbalanceVertSurface(void){ 8056 8056 8057 8057 if (!IsOnSurface()) return NULL; … … 8142 8142 /*Retrieve all inputs and parameters*/ 8143 8143 GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 8144 this->parameters->FindParam(&FSreconditioning, DiagnosticFSreconditioningEnum);8144 this->parameters->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum); 8145 8145 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 8146 8146 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); … … 8208 8208 GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 8209 8209 parameters->FindParam(&analysis_type,AnalysisTypeEnum); 8210 this->parameters->FindParam(&FSreconditioning, DiagnosticFSreconditioningEnum);8210 this->parameters->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum); 8211 8211 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 8212 8212 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); … … 8297 8297 /*Retrieve all inputs and parameters*/ 8298 8298 GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 8299 this->parameters->FindParam(&FSreconditioning, DiagnosticFSreconditioningEnum);8299 this->parameters->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum); 8300 8300 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 8301 8301 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); … … 8373 8373 GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 8374 8374 parameters->FindParam(&analysis_type,AnalysisTypeEnum); 8375 this->parameters->FindParam(&FSreconditioning, DiagnosticFSreconditioningEnum);8375 this->parameters->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum); 8376 8376 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 8377 8377 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); … … 8418 8418 } 8419 8419 /*}}}*/ 8420 /*FUNCTION Penta::CreatePVector DiagnosticHoriz{{{*/8421 ElementVector* Penta::CreatePVector DiagnosticHoriz(void){8420 /*FUNCTION Penta::CreatePVectorStressbalanceHoriz{{{*/ 8421 ElementVector* Penta::CreatePVectorStressbalanceHoriz(void){ 8422 8422 8423 8423 int approximation; … … 8426 8426 switch(approximation){ 8427 8427 case SSAApproximationEnum: 8428 return CreatePVector DiagnosticSSA();8428 return CreatePVectorStressbalanceSSA(); 8429 8429 case HOApproximationEnum: 8430 return CreatePVector DiagnosticHO();8430 return CreatePVectorStressbalanceHO(); 8431 8431 case L1L2ApproximationEnum: 8432 return CreatePVector DiagnosticL1L2();8432 return CreatePVectorStressbalanceL1L2(); 8433 8433 case SIAApproximationEnum: 8434 8434 return NULL; … … 8436 8436 return NULL; 8437 8437 case FSApproximationEnum: 8438 return CreatePVector DiagnosticFS();8438 return CreatePVectorStressbalanceFS(); 8439 8439 case SSAHOApproximationEnum: 8440 return CreatePVector DiagnosticSSAHO();8440 return CreatePVectorStressbalanceSSAHO(); 8441 8441 case SSAFSApproximationEnum: 8442 return CreatePVector DiagnosticSSAFS();8442 return CreatePVectorStressbalanceSSAFS(); 8443 8443 case HOFSApproximationEnum: 8444 return CreatePVector DiagnosticHOFS();8444 return CreatePVectorStressbalanceHOFS(); 8445 8445 default: 8446 8446 _error_("Approximation " << EnumToStringx(approximation) << " not supported yet"); … … 8448 8448 } 8449 8449 /*}}}*/ 8450 /*FUNCTION Penta::CreatePVector DiagnosticSSAHO{{{*/8451 ElementVector* Penta::CreatePVector DiagnosticSSAHO(void){8450 /*FUNCTION Penta::CreatePVectorStressbalanceSSAHO{{{*/ 8451 ElementVector* Penta::CreatePVectorStressbalanceSSAHO(void){ 8452 8452 8453 8453 /*compute all load vectors for this element*/ 8454 ElementVector* pe1=CreatePVector DiagnosticSSA();8455 ElementVector* pe2=CreatePVector DiagnosticHO();8454 ElementVector* pe1=CreatePVectorStressbalanceSSA(); 8455 ElementVector* pe2=CreatePVectorStressbalanceHO(); 8456 8456 ElementVector* pe =new ElementVector(pe1,pe2); 8457 8457 … … 8462 8462 } 8463 8463 /*}}}*/ 8464 /*FUNCTION Penta::CreatePVector DiagnosticSSAFS{{{*/8465 ElementVector* Penta::CreatePVector DiagnosticSSAFS(void){8464 /*FUNCTION Penta::CreatePVectorStressbalanceSSAFS{{{*/ 8465 ElementVector* Penta::CreatePVectorStressbalanceSSAFS(void){ 8466 8466 8467 8467 /*compute all load vectors for this element*/ 8468 8468 int init = this->element_type; 8469 8469 this->element_type=P1Enum; 8470 ElementVector* pe1=CreatePVector DiagnosticSSA();8470 ElementVector* pe1=CreatePVectorStressbalanceSSA(); 8471 8471 this->element_type=init; 8472 ElementVector* pe2=CreatePVector DiagnosticFS();8472 ElementVector* pe2=CreatePVectorStressbalanceFS(); 8473 8473 int indices[3]={18,19,20}; 8474 8474 this->element_type=MINIcondensedEnum; 8475 ElementMatrix* Ke = CreateKMatrix DiagnosticFS();8475 ElementMatrix* Ke = CreateKMatrixStressbalanceFS(); 8476 8476 this->element_type=init; 8477 8477 pe2->StaticCondensation(Ke,3,&indices[0]); … … 8487 8487 } 8488 8488 /*}}}*/ 8489 /*FUNCTION Penta::CreatePVector DiagnosticHOFS{{{*/8490 ElementVector* Penta::CreatePVector DiagnosticHOFS(void){8489 /*FUNCTION Penta::CreatePVectorStressbalanceHOFS{{{*/ 8490 ElementVector* Penta::CreatePVectorStressbalanceHOFS(void){ 8491 8491 8492 8492 /*compute all load vectors for this element*/ 8493 8493 int init = this->element_type; 8494 8494 this->element_type=P1Enum; 8495 ElementVector* pe1=CreatePVector DiagnosticHO();8495 ElementVector* pe1=CreatePVectorStressbalanceHO(); 8496 8496 this->element_type=init; 8497 ElementVector* pe2=CreatePVector DiagnosticFS();8497 ElementVector* pe2=CreatePVectorStressbalanceFS(); 8498 8498 int indices[3]={18,19,20}; 8499 8499 this->element_type=MINIcondensedEnum; 8500 ElementMatrix* Ke = CreateKMatrix DiagnosticFS();8500 ElementMatrix* Ke = CreateKMatrixStressbalanceFS(); 8501 8501 this->element_type=init; 8502 8502 pe2->StaticCondensation(Ke,3,&indices[0]); … … 8512 8512 } 8513 8513 /*}}}*/ 8514 /*FUNCTION Penta::CreatePVector DiagnosticSIA{{{*/8515 ElementVector* Penta::CreatePVector DiagnosticSIA(void){8514 /*FUNCTION Penta::CreatePVectorStressbalanceSIA{{{*/ 8515 ElementVector* Penta::CreatePVectorStressbalanceSIA(void){ 8516 8516 8517 8517 /*Intermediaries*/ … … 8602 8602 } 8603 8603 /*}}}*/ 8604 /*FUNCTION Penta::CreatePVector DiagnosticSSA{{{*/8605 ElementVector* Penta::CreatePVector DiagnosticSSA(void){8604 /*FUNCTION Penta::CreatePVectorStressbalanceSSA{{{*/ 8605 ElementVector* Penta::CreatePVectorStressbalanceSSA(void){ 8606 8606 8607 8607 if (!IsOnBed()) return NULL; … … 8609 8609 /*Call Tria function*/ 8610 8610 Tria* tria=(Tria*)SpawnTria(0); //lower face is 0, upper face is 1. 8611 ElementVector* pe=tria->CreatePVector DiagnosticSSA();8611 ElementVector* pe=tria->CreatePVectorStressbalanceSSA(); 8612 8612 delete tria->material; delete tria; 8613 8613 … … 8616 8616 } 8617 8617 /*}}}*/ 8618 /*FUNCTION Penta::CreatePVector DiagnosticL1L2{{{*/8619 ElementVector* Penta::CreatePVector DiagnosticL1L2(void){8618 /*FUNCTION Penta::CreatePVectorStressbalanceL1L2{{{*/ 8619 ElementVector* Penta::CreatePVectorStressbalanceL1L2(void){ 8620 8620 8621 8621 if (!IsOnBed()) return NULL; … … 8623 8623 /*Call Tria function*/ 8624 8624 Tria* tria=(Tria*)SpawnTria(0); //lower face is 0, upper face is 1. 8625 ElementVector* pe=tria->CreatePVector DiagnosticSSA();8625 ElementVector* pe=tria->CreatePVectorStressbalanceSSA(); 8626 8626 delete tria->material; delete tria; 8627 8627 … … 8630 8630 } 8631 8631 /*}}}*/ 8632 /*FUNCTION Penta::CreatePVector DiagnosticHO{{{*/8633 ElementVector* Penta::CreatePVector DiagnosticHO(void){8632 /*FUNCTION Penta::CreatePVectorStressbalanceHO{{{*/ 8633 ElementVector* Penta::CreatePVectorStressbalanceHO(void){ 8634 8634 8635 8635 /*compute all load vectors for this element*/ 8636 ElementVector* pe1=CreatePVector DiagnosticHODrivingStress();8637 ElementVector* pe2=CreatePVector DiagnosticHOFront();8636 ElementVector* pe1=CreatePVectorStressbalanceHODrivingStress(); 8637 ElementVector* pe2=CreatePVectorStressbalanceHOFront(); 8638 8638 ElementVector* pe =new ElementVector(pe1,pe2); 8639 8639 … … 8644 8644 } 8645 8645 /*}}}*/ 8646 /*FUNCTION Penta::CreatePVector DiagnosticHODrivingStress{{{*/8647 ElementVector* Penta::CreatePVector DiagnosticHODrivingStress(void){8646 /*FUNCTION Penta::CreatePVectorStressbalanceHODrivingStress{{{*/ 8647 ElementVector* Penta::CreatePVectorStressbalanceHODrivingStress(void){ 8648 8648 8649 8649 /*Intermediaries*/ … … 8696 8696 } 8697 8697 /*}}}*/ 8698 /*FUNCTION Penta::CreatePVector DiagnosticHOFront{{{*/8699 ElementVector* Penta::CreatePVector DiagnosticHOFront(void){8698 /*FUNCTION Penta::CreatePVectorStressbalanceHOFront{{{*/ 8699 ElementVector* Penta::CreatePVectorStressbalanceHOFront(void){ 8700 8700 8701 8701 /*Intermediaries */ … … 8779 8779 } 8780 8780 /*}}}*/ 8781 /*FUNCTION Penta::CreatePVector DiagnosticFS {{{*/8782 ElementVector* Penta::CreatePVector DiagnosticFS(void){8781 /*FUNCTION Penta::CreatePVectorStressbalanceFS {{{*/ 8782 ElementVector* Penta::CreatePVectorStressbalanceFS(void){ 8783 8783 8784 8784 ElementVector* pe1; … … 8788 8788 8789 8789 /*compute all stiffness matrices for this element*/ 8790 pe1=CreatePVector DiagnosticFSViscous();8791 pe2=CreatePVector DiagnosticFSShelf();8792 pe3=CreatePVector DiagnosticFSFront();8790 pe1=CreatePVectorStressbalanceFSViscous(); 8791 pe2=CreatePVectorStressbalanceFSShelf(); 8792 pe3=CreatePVectorStressbalanceFSFront(); 8793 8793 pe =new ElementVector(pe1,pe2,pe3); 8794 8794 … … 8800 8800 } 8801 8801 /*}}}*/ 8802 /*FUNCTION Penta::CreatePVector DiagnosticFSFront{{{*/8803 ElementVector* Penta::CreatePVector DiagnosticFSFront(void){8802 /*FUNCTION Penta::CreatePVectorStressbalanceFSFront{{{*/ 8803 ElementVector* Penta::CreatePVectorStressbalanceFSFront(void){ 8804 8804 8805 8805 /*Intermediaries */ … … 8980 8980 } 8981 8981 /*}}}*/ 8982 /*FUNCTION Penta::CreatePVector DiagnosticFSViscous {{{*/8983 ElementVector* Penta::CreatePVector DiagnosticFSViscous(void){8982 /*FUNCTION Penta::CreatePVectorStressbalanceFSViscous {{{*/ 8983 ElementVector* Penta::CreatePVectorStressbalanceFSViscous(void){ 8984 8984 8985 8985 /*Intermediaries*/ … … 9047 9047 } 9048 9048 /*}}}*/ 9049 /*FUNCTION Penta::CreatePVector DiagnosticFSShelf{{{*/9050 ElementVector* Penta::CreatePVector DiagnosticFSShelf(void){9049 /*FUNCTION Penta::CreatePVectorStressbalanceFSShelf{{{*/ 9050 ElementVector* Penta::CreatePVectorStressbalanceFSShelf(void){ 9051 9051 9052 9052 /*Intermediaries*/ … … 9081 9081 9082 9082 /*Retrieve all inputs and parameters*/ 9083 this->parameters->FindParam(&shelf_dampening, DiagnosticShelfDampeningEnum);9083 this->parameters->FindParam(&shelf_dampening,StressbalanceShelfDampeningEnum); 9084 9084 rho_water=matpar->GetRhoWater(); 9085 9085 gravity=matpar->GetG(); … … 9132 9132 } 9133 9133 /*}}}*/ 9134 /*FUNCTION Penta::CreatePVector DiagnosticVert {{{*/9135 ElementVector* Penta::CreatePVector DiagnosticVert(void){9134 /*FUNCTION Penta::CreatePVectorStressbalanceVert {{{*/ 9135 ElementVector* Penta::CreatePVectorStressbalanceVert(void){ 9136 9136 9137 9137 /*compute all load vectors for this element*/ 9138 ElementVector* pe1=CreatePVector DiagnosticVertVolume();9139 ElementVector* pe2=CreatePVector DiagnosticVertBase();9138 ElementVector* pe1=CreatePVectorStressbalanceVertVolume(); 9139 ElementVector* pe2=CreatePVectorStressbalanceVertBase(); 9140 9140 ElementVector* pe =new ElementVector(pe1,pe2); 9141 9141 … … 9146 9146 } 9147 9147 /*}}}*/ 9148 /*FUNCTION Penta::CreatePVector DiagnosticVertVolume {{{*/9149 ElementVector* Penta::CreatePVector DiagnosticVertVolume(void){9148 /*FUNCTION Penta::CreatePVectorStressbalanceVertVolume {{{*/ 9149 ElementVector* Penta::CreatePVectorStressbalanceVertVolume(void){ 9150 9150 9151 9151 /*Constants*/ … … 9201 9201 } 9202 9202 /*}}}*/ 9203 /*FUNCTION Penta::CreatePVector DiagnosticVertBase {{{*/9204 ElementVector* Penta::CreatePVector DiagnosticVertBase(void){9203 /*FUNCTION Penta::CreatePVectorStressbalanceVertBase {{{*/ 9204 ElementVector* Penta::CreatePVectorStressbalanceVertBase(void){ 9205 9205 9206 9206 /*Constants*/ … … 9265 9265 } 9266 9266 /*}}}*/ 9267 /*FUNCTION Penta::CreateJacobian DiagnosticHoriz{{{*/9268 ElementMatrix* Penta::CreateJacobian DiagnosticHoriz(void){9267 /*FUNCTION Penta::CreateJacobianStressbalanceHoriz{{{*/ 9268 ElementMatrix* Penta::CreateJacobianStressbalanceHoriz(void){ 9269 9269 9270 9270 int approximation; … … 9273 9273 switch(approximation){ 9274 9274 case SSAApproximationEnum: 9275 return CreateJacobian DiagnosticSSA2d();9275 return CreateJacobianStressbalanceSSA2d(); 9276 9276 case HOApproximationEnum: 9277 return CreateJacobian DiagnosticHO();9277 return CreateJacobianStressbalanceHO(); 9278 9278 case FSApproximationEnum: 9279 return CreateJacobian DiagnosticFS();9279 return CreateJacobianStressbalanceFS(); 9280 9280 case NoneApproximationEnum: 9281 9281 return NULL; … … 9285 9285 } 9286 9286 /*}}}*/ 9287 /*FUNCTION Penta::CreateJacobian DiagnosticSSA2d{{{*/9288 ElementMatrix* Penta::CreateJacobian DiagnosticSSA2d(void){9287 /*FUNCTION Penta::CreateJacobianStressbalanceSSA2d{{{*/ 9288 ElementMatrix* Penta::CreateJacobianStressbalanceSSA2d(void){ 9289 9289 9290 9290 /*Figure out if this penta is collapsed. If so, then bailout, except if it is at the … … 9308 9308 /*Call Tria function*/ 9309 9309 Tria* tria=(Tria*)SpawnTria(0); //lower face is 0, upper face is 1. 9310 ElementMatrix* Ke=tria->CreateJacobian DiagnosticSSA();9310 ElementMatrix* Ke=tria->CreateJacobianStressbalanceSSA(); 9311 9311 delete tria->material; delete tria; 9312 9312 … … 9319 9319 } 9320 9320 /*}}}*/ 9321 /*FUNCTION Penta::CreateJacobian DiagnosticHO{{{*/9322 ElementMatrix* Penta::CreateJacobian DiagnosticHO(void){9321 /*FUNCTION Penta::CreateJacobianStressbalanceHO{{{*/ 9322 ElementMatrix* Penta::CreateJacobianStressbalanceHO(void){ 9323 9323 9324 9324 /*Constants*/ … … 9338 9338 9339 9339 /*Initialize Jacobian with regular HO (first part of the Gateau derivative)*/ 9340 ElementMatrix* Ke=CreateKMatrix DiagnosticHO();9340 ElementMatrix* Ke=CreateKMatrixStressbalanceHO(); 9341 9341 9342 9342 /*Retrieve all inputs and parameters*/ … … 9383 9383 } 9384 9384 /*}}}*/ 9385 /*FUNCTION Penta::CreateJacobian DiagnosticFS{{{*/9386 ElementMatrix* Penta::CreateJacobian DiagnosticFS(void){9385 /*FUNCTION Penta::CreateJacobianStressbalanceFS{{{*/ 9386 ElementMatrix* Penta::CreateJacobianStressbalanceFS(void){ 9387 9387 9388 9388 /*Intermediaries */ … … 9413 9413 9414 9414 /*Initialize Jacobian with regular FS (first part of the Gateau derivative)*/ 9415 ElementMatrix* Ke=CreateKMatrix DiagnosticFS();9415 ElementMatrix* Ke=CreateKMatrixStressbalanceFS(); 9416 9416 IssmDouble* dbasis = xNew<IssmDouble>(3*vnumnodes); 9417 9417 … … 9476 9476 } 9477 9477 /*}}}*/ 9478 /*FUNCTION Penta::GetSolutionFromInputs DiagnosticHoriz{{{*/9479 void Penta::GetSolutionFromInputs DiagnosticHoriz(Vector<IssmDouble>* solution){9478 /*FUNCTION Penta::GetSolutionFromInputsStressbalanceHoriz{{{*/ 9479 void Penta::GetSolutionFromInputsStressbalanceHoriz(Vector<IssmDouble>* solution){ 9480 9480 9481 9481 int approximation; … … 9517 9517 } 9518 9518 /*}}}*/ 9519 /*FUNCTION Penta::GetSolutionFromInputs DiagnosticSIA{{{*/9520 void Penta::GetSolutionFromInputs DiagnosticSIA(Vector<IssmDouble>* solution){9519 /*FUNCTION Penta::GetSolutionFromInputsStressbalanceSIA{{{*/ 9520 void Penta::GetSolutionFromInputsStressbalanceSIA(Vector<IssmDouble>* solution){ 9521 9521 9522 9522 const int numdof=NDOF2*NUMVERTICES; … … 9553 9553 } 9554 9554 /*}}}*/ 9555 /*FUNCTION Penta::GetSolutionFromInputs DiagnosticVert{{{*/9556 void Penta::GetSolutionFromInputs DiagnosticVert(Vector<IssmDouble>* solution){9555 /*FUNCTION Penta::GetSolutionFromInputsStressbalanceVert{{{*/ 9556 void Penta::GetSolutionFromInputsStressbalanceVert(Vector<IssmDouble>* solution){ 9557 9557 9558 9558 const int numdof=NDOF1*NUMVERTICES; … … 9586 9586 } 9587 9587 /*}}}*/ 9588 /*FUNCTION Penta::GetSolutionFromInputs DiagnosticFS{{{*/9589 void Penta::GetSolutionFromInputs DiagnosticFS(Vector<IssmDouble>* solution){9588 /*FUNCTION Penta::GetSolutionFromInputsStressbalanceFS{{{*/ 9589 void Penta::GetSolutionFromInputsStressbalanceFS(Vector<IssmDouble>* solution){ 9590 9590 9591 9591 int* vdoflist=NULL; … … 9613 9613 Input* p_input =inputs->GetInput(PressureEnum); _assert_(p_input); 9614 9614 9615 this->parameters->FindParam(&FSreconditioning, DiagnosticFSreconditioningEnum);9615 this->parameters->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum); 9616 9616 9617 9617 /*Ok, we have vx vy vz in values, fill in vx vy vz arrays: */ … … 9714 9714 } 9715 9715 /*}}}*/ 9716 /*FUNCTION Penta::InputUpdateFromSolution DiagnosticHoriz {{{*/9717 void Penta::InputUpdateFromSolution DiagnosticHoriz(IssmDouble* solution){9716 /*FUNCTION Penta::InputUpdateFromSolutionStressbalanceHoriz {{{*/ 9717 void Penta::InputUpdateFromSolutionStressbalanceHoriz(IssmDouble* solution){ 9718 9718 9719 9719 int approximation; … … 9729 9729 } 9730 9730 else{ 9731 InputUpdateFromSolution DiagnosticSSA(solution);9731 InputUpdateFromSolutionStressbalanceSSA(solution); 9732 9732 return; 9733 9733 } … … 9735 9735 if (approximation==L1L2ApproximationEnum){ 9736 9736 if (!IsOnBed()) return; 9737 InputUpdateFromSolution DiagnosticL1L2(solution);9737 InputUpdateFromSolutionStressbalanceL1L2(solution); 9738 9738 return; 9739 9739 } 9740 9740 else if (approximation==HOApproximationEnum){ 9741 InputUpdateFromSolution DiagnosticHO(solution);9741 InputUpdateFromSolutionStressbalanceHO(solution); 9742 9742 } 9743 9743 else if (approximation==HOFSApproximationEnum){ 9744 InputUpdateFromSolution DiagnosticHOFS(solution);9744 InputUpdateFromSolutionStressbalanceHOFS(solution); 9745 9745 } 9746 9746 else if (approximation==SSAFSApproximationEnum){ 9747 InputUpdateFromSolution DiagnosticSSAFS(solution);9747 InputUpdateFromSolutionStressbalanceSSAFS(solution); 9748 9748 } 9749 9749 else if (approximation==FSApproximationEnum || approximation==NoneApproximationEnum){ 9750 InputUpdateFromSolution DiagnosticFS(solution);9750 InputUpdateFromSolutionStressbalanceFS(solution); 9751 9751 } 9752 9752 else if (approximation==SSAHOApproximationEnum){ 9753 InputUpdateFromSolution DiagnosticSSAHO(solution);9754 } 9755 } 9756 /*}}}*/ 9757 /*FUNCTION Penta::InputUpdateFromSolution DiagnosticSSA {{{*/9758 void Penta::InputUpdateFromSolution DiagnosticSSA(IssmDouble* solution){9753 InputUpdateFromSolutionStressbalanceSSAHO(solution); 9754 } 9755 } 9756 /*}}}*/ 9757 /*FUNCTION Penta::InputUpdateFromSolutionStressbalanceSSA {{{*/ 9758 void Penta::InputUpdateFromSolutionStressbalanceSSA(IssmDouble* solution){ 9759 9759 9760 9760 int numnodes = this->NumberofNodes(); … … 9837 9837 } 9838 9838 /*}}}*/ 9839 /*FUNCTION Penta::InputUpdateFromSolution DiagnosticSSAHO {{{*/9840 void Penta::InputUpdateFromSolution DiagnosticSSAHO(IssmDouble* solution){9839 /*FUNCTION Penta::InputUpdateFromSolutionStressbalanceSSAHO {{{*/ 9840 void Penta::InputUpdateFromSolutionStressbalanceSSAHO(IssmDouble* solution){ 9841 9841 9842 9842 const int numdof=NDOF2*NUMVERTICES; … … 9921 9921 } 9922 9922 /*}}}*/ 9923 /*FUNCTION Penta::InputUpdateFromSolution DiagnosticSSAFS {{{*/9924 void Penta::InputUpdateFromSolution DiagnosticSSAFS(IssmDouble* solution){9923 /*FUNCTION Penta::InputUpdateFromSolutionStressbalanceSSAFS {{{*/ 9924 void Penta::InputUpdateFromSolutionStressbalanceSSAFS(IssmDouble* solution){ 9925 9925 9926 9926 const int numdofm=NDOF2*NUMVERTICES; … … 9955 9955 GetDofList(&doflists,FSvelocityEnum,GsetEnum); 9956 9956 GetDofListPressure(&doflistpressure,GsetEnum); 9957 this->parameters->FindParam(&FSreconditioning, DiagnosticFSreconditioningEnum);9957 this->parameters->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum); 9958 9958 9959 9959 /*Get node data: */ … … 10024 10024 } 10025 10025 /*}}}*/ 10026 /*FUNCTION Penta::InputUpdateFromSolution DiagnosticL1L2 {{{*/10027 void Penta::InputUpdateFromSolution DiagnosticL1L2(IssmDouble* solution){10026 /*FUNCTION Penta::InputUpdateFromSolutionStressbalanceL1L2 {{{*/ 10027 void Penta::InputUpdateFromSolutionStressbalanceL1L2(IssmDouble* solution){ 10028 10028 10029 10029 const int numdof=NDOF2*NUMVERTICES; … … 10105 10105 } 10106 10106 /*}}}*/ 10107 /*FUNCTION Penta::InputUpdateFromSolution DiagnosticHO {{{*/10108 void Penta::InputUpdateFromSolution DiagnosticHO(IssmDouble* solution){10107 /*FUNCTION Penta::InputUpdateFromSolutionStressbalanceHO {{{*/ 10108 void Penta::InputUpdateFromSolutionStressbalanceHO(IssmDouble* solution){ 10109 10109 10110 10110 int i; … … 10178 10178 } 10179 10179 /*}}}*/ 10180 /*FUNCTION Penta::InputUpdateFromSolution DiagnosticHOFS {{{*/10181 void Penta::InputUpdateFromSolution DiagnosticHOFS(IssmDouble* solution){10180 /*FUNCTION Penta::InputUpdateFromSolutionStressbalanceHOFS {{{*/ 10181 void Penta::InputUpdateFromSolutionStressbalanceHOFS(IssmDouble* solution){ 10182 10182 10183 10183 const int numdofp=NDOF2*NUMVERTICES; … … 10211 10211 GetDofList(&doflists,FSvelocityEnum,GsetEnum); 10212 10212 GetDofListPressure(&doflistpressure,GsetEnum); 10213 this->parameters->FindParam(&FSreconditioning, DiagnosticFSreconditioningEnum);10213 this->parameters->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum); 10214 10214 10215 10215 /*Get node data: */ … … 10278 10278 } 10279 10279 /*}}}*/ 10280 /*FUNCTION Penta::InputUpdateFromSolution DiagnosticSIA {{{*/10281 void Penta::InputUpdateFromSolution DiagnosticSIA(IssmDouble* solution){10280 /*FUNCTION Penta::InputUpdateFromSolutionStressbalanceSIA {{{*/ 10281 void Penta::InputUpdateFromSolutionStressbalanceSIA(IssmDouble* solution){ 10282 10282 10283 10283 int numnodes = this->NumberofNodes(); … … 10342 10342 } 10343 10343 /*}}}*/ 10344 /*FUNCTION Penta::InputUpdateFromSolution DiagnosticVert {{{*/10345 void Penta::InputUpdateFromSolution DiagnosticVert(IssmDouble* solution){10344 /*FUNCTION Penta::InputUpdateFromSolutionStressbalanceVert {{{*/ 10345 void Penta::InputUpdateFromSolutionStressbalanceVert(IssmDouble* solution){ 10346 10346 10347 10347 int numnodes = this->NumberofNodes(); … … 10446 10446 } 10447 10447 /*}}}*/ 10448 /*FUNCTION Penta::InputUpdateFromSolution DiagnosticFS {{{*/10449 void Penta::InputUpdateFromSolution DiagnosticFS(IssmDouble* solution){10448 /*FUNCTION Penta::InputUpdateFromSolutionStressbalanceFS {{{*/ 10449 void Penta::InputUpdateFromSolutionStressbalanceFS(IssmDouble* solution){ 10450 10450 10451 10451 int i; … … 10496 10496 10497 10497 /*Recondition pressure and compute vel: */ 10498 this->parameters->FindParam(&FSreconditioning, DiagnosticFSreconditioningEnum);10498 this->parameters->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum); 10499 10499 for(i=0;i<pnumnodes;i++) pressure[i]=pressure[i]*FSreconditioning; 10500 10500 for(i=0;i<vnumnodes;i++) vel[i]=pow( pow(vx[i],2.0) + pow(vy[i],2.0) + pow(vz[i],2.0) , 0.5); -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r15767 r15771 228 228 void UpdateConstraints(void); 229 229 230 #ifdef _HAVE_ DIAGNOSTIC_230 #ifdef _HAVE_STRESSBALANCE_ 231 231 ElementMatrix* CreateKMatrixCouplingSSAHO(void); 232 232 ElementMatrix* CreateKMatrixCouplingSSAHOViscous(void); … … 236 236 ElementMatrix* CreateKMatrixCouplingSSAFSFriction(void); 237 237 ElementMatrix* CreateKMatrixCouplingHOFS(void); 238 ElementMatrix* CreateKMatrix DiagnosticHoriz(void);238 ElementMatrix* CreateKMatrixStressbalanceHoriz(void); 239 239 ElementMatrix* CreateKMatrixAdjointHoriz(void); 240 ElementVector* CreateDVector DiagnosticHoriz(void);241 ElementVector* CreateDVector DiagnosticFS(void);242 ElementMatrix* CreateKMatrix DiagnosticSIA(void);243 ElementMatrix* CreateKMatrix DiagnosticSSA2d(void);244 ElementMatrix* CreateKMatrix DiagnosticSSA3d(void);245 ElementMatrix* CreateKMatrix DiagnosticSSA3dViscous(void);246 ElementMatrix* CreateKMatrix DiagnosticSSA3dFriction(void);247 ElementMatrix* CreateKMatrix DiagnosticSSAHO(void);248 ElementMatrix* CreateKMatrix DiagnosticSSAFS(void);249 ElementMatrix* CreateKMatrix DiagnosticL1L2(void);250 ElementMatrix* CreateKMatrix DiagnosticL1L2Viscous(void);251 ElementMatrix* CreateKMatrix DiagnosticL1L2Friction(void);252 ElementMatrix* CreateKMatrix DiagnosticHO(void);253 ElementMatrix* CreateKMatrix DiagnosticHOViscous(void);254 ElementMatrix* CreateKMatrix DiagnosticHOFriction(void);255 ElementMatrix* CreateKMatrix DiagnosticHOFS(void);256 ElementMatrix* CreateKMatrix DiagnosticFS(void);257 ElementMatrix* CreateKMatrix DiagnosticFSViscous(void);240 ElementVector* CreateDVectorStressbalanceHoriz(void); 241 ElementVector* CreateDVectorStressbalanceFS(void); 242 ElementMatrix* CreateKMatrixStressbalanceSIA(void); 243 ElementMatrix* CreateKMatrixStressbalanceSSA2d(void); 244 ElementMatrix* CreateKMatrixStressbalanceSSA3d(void); 245 ElementMatrix* CreateKMatrixStressbalanceSSA3dViscous(void); 246 ElementMatrix* CreateKMatrixStressbalanceSSA3dFriction(void); 247 ElementMatrix* CreateKMatrixStressbalanceSSAHO(void); 248 ElementMatrix* CreateKMatrixStressbalanceSSAFS(void); 249 ElementMatrix* CreateKMatrixStressbalanceL1L2(void); 250 ElementMatrix* CreateKMatrixStressbalanceL1L2Viscous(void); 251 ElementMatrix* CreateKMatrixStressbalanceL1L2Friction(void); 252 ElementMatrix* CreateKMatrixStressbalanceHO(void); 253 ElementMatrix* CreateKMatrixStressbalanceHOViscous(void); 254 ElementMatrix* CreateKMatrixStressbalanceHOFriction(void); 255 ElementMatrix* CreateKMatrixStressbalanceHOFS(void); 256 ElementMatrix* CreateKMatrixStressbalanceFS(void); 257 ElementMatrix* CreateKMatrixStressbalanceFSViscous(void); 258 258 void KMatrixGLSstabilization(ElementMatrix* Ke); 259 ElementMatrix* CreateKMatrix DiagnosticFSFriction(void);260 ElementMatrix* CreateKMatrix DiagnosticVert(void);261 ElementMatrix* CreateKMatrix DiagnosticVertVolume(void);262 ElementMatrix* CreateKMatrix DiagnosticVertSurface(void);263 ElementMatrix* CreateJacobian DiagnosticHoriz(void);264 ElementMatrix* CreateJacobian DiagnosticSSA2d(void);265 ElementMatrix* CreateJacobian DiagnosticHO(void);266 ElementMatrix* CreateJacobian DiagnosticFS(void);267 void InputUpdateFromSolution DiagnosticHoriz( IssmDouble* solutiong);268 void InputUpdateFromSolution DiagnosticSSA( IssmDouble* solutiong);269 void InputUpdateFromSolution DiagnosticSSAHO( IssmDouble* solutiong);270 void InputUpdateFromSolution DiagnosticSSAFS( IssmDouble* solutiong);271 void InputUpdateFromSolution DiagnosticL1L2( IssmDouble* solutiong);272 void InputUpdateFromSolution DiagnosticHO( IssmDouble* solutiong);273 void InputUpdateFromSolution DiagnosticHOFS( IssmDouble* solutiong);274 void InputUpdateFromSolution DiagnosticSIA( IssmDouble* solutiong);275 void InputUpdateFromSolution DiagnosticVert( IssmDouble* solutiong);276 void InputUpdateFromSolution DiagnosticFS( IssmDouble* solutiong);277 void GetSolutionFromInputs DiagnosticHoriz(Vector<IssmDouble>* solutiong);278 void GetSolutionFromInputs DiagnosticSIA(Vector<IssmDouble>* solutiong);279 void GetSolutionFromInputs DiagnosticFS(Vector<IssmDouble>* solutiong);280 void GetSolutionFromInputs DiagnosticVert(Vector<IssmDouble>* solutiong);259 ElementMatrix* CreateKMatrixStressbalanceFSFriction(void); 260 ElementMatrix* CreateKMatrixStressbalanceVert(void); 261 ElementMatrix* CreateKMatrixStressbalanceVertVolume(void); 262 ElementMatrix* CreateKMatrixStressbalanceVertSurface(void); 263 ElementMatrix* CreateJacobianStressbalanceHoriz(void); 264 ElementMatrix* CreateJacobianStressbalanceSSA2d(void); 265 ElementMatrix* CreateJacobianStressbalanceHO(void); 266 ElementMatrix* CreateJacobianStressbalanceFS(void); 267 void InputUpdateFromSolutionStressbalanceHoriz( IssmDouble* solutiong); 268 void InputUpdateFromSolutionStressbalanceSSA( IssmDouble* solutiong); 269 void InputUpdateFromSolutionStressbalanceSSAHO( IssmDouble* solutiong); 270 void InputUpdateFromSolutionStressbalanceSSAFS( IssmDouble* solutiong); 271 void InputUpdateFromSolutionStressbalanceL1L2( IssmDouble* solutiong); 272 void InputUpdateFromSolutionStressbalanceHO( IssmDouble* solutiong); 273 void InputUpdateFromSolutionStressbalanceHOFS( IssmDouble* solutiong); 274 void InputUpdateFromSolutionStressbalanceSIA( IssmDouble* solutiong); 275 void InputUpdateFromSolutionStressbalanceVert( IssmDouble* solutiong); 276 void InputUpdateFromSolutionStressbalanceFS( IssmDouble* solutiong); 277 void GetSolutionFromInputsStressbalanceHoriz(Vector<IssmDouble>* solutiong); 278 void GetSolutionFromInputsStressbalanceSIA(Vector<IssmDouble>* solutiong); 279 void GetSolutionFromInputsStressbalanceFS(Vector<IssmDouble>* solutiong); 280 void GetSolutionFromInputsStressbalanceVert(Vector<IssmDouble>* solutiong); 281 281 ElementVector* CreatePVectorCouplingSSAFS(void); 282 282 ElementVector* CreatePVectorCouplingSSAFSViscous(void); … … 285 285 ElementVector* CreatePVectorCouplingHOFSViscous(void); 286 286 ElementVector* CreatePVectorCouplingHOFSFriction(void); 287 ElementVector* CreatePVector DiagnosticHoriz(void);288 ElementVector* CreatePVector DiagnosticSIA(void);289 ElementVector* CreatePVector DiagnosticSSA(void);290 ElementVector* CreatePVector DiagnosticSSAHO(void);291 ElementVector* CreatePVector DiagnosticSSAFS(void);292 ElementVector* CreatePVector DiagnosticL1L2(void);293 ElementVector* CreatePVector DiagnosticHO(void);294 ElementVector* CreatePVector DiagnosticHODrivingStress(void);295 ElementVector* CreatePVector DiagnosticHOFront(void);296 ElementVector* CreatePVector DiagnosticHOFS(void);297 ElementVector* CreatePVector DiagnosticFS(void);298 ElementVector* CreatePVector DiagnosticFSFront(void);299 ElementVector* CreatePVector DiagnosticFSViscous(void);287 ElementVector* CreatePVectorStressbalanceHoriz(void); 288 ElementVector* CreatePVectorStressbalanceSIA(void); 289 ElementVector* CreatePVectorStressbalanceSSA(void); 290 ElementVector* CreatePVectorStressbalanceSSAHO(void); 291 ElementVector* CreatePVectorStressbalanceSSAFS(void); 292 ElementVector* CreatePVectorStressbalanceL1L2(void); 293 ElementVector* CreatePVectorStressbalanceHO(void); 294 ElementVector* CreatePVectorStressbalanceHODrivingStress(void); 295 ElementVector* CreatePVectorStressbalanceHOFront(void); 296 ElementVector* CreatePVectorStressbalanceHOFS(void); 297 ElementVector* CreatePVectorStressbalanceFS(void); 298 ElementVector* CreatePVectorStressbalanceFSFront(void); 299 ElementVector* CreatePVectorStressbalanceFSViscous(void); 300 300 void PVectorGLSstabilization(ElementVector* pe); 301 ElementVector* CreatePVector DiagnosticFSShelf(void);302 ElementVector* CreatePVector DiagnosticVert(void);303 ElementVector* CreatePVector DiagnosticVertVolume(void);304 ElementVector* CreatePVector DiagnosticVertBase(void);301 ElementVector* CreatePVectorStressbalanceFSShelf(void); 302 ElementVector* CreatePVectorStressbalanceVert(void); 303 ElementVector* CreatePVectorStressbalanceVertVolume(void); 304 ElementVector* CreatePVectorStressbalanceVertBase(void); 305 305 void GetL1L2Viscosity(IssmDouble*, IssmDouble*, GaussPenta*, Input*, Input*, Input*); 306 306 #endif -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r15767 r15771 215 215 /*Just branch to the correct element stiffness matrix generator, according to the type of analysis we are carrying out: */ 216 216 switch(analysis_type){ 217 #ifdef _HAVE_ DIAGNOSTIC_218 case DiagnosticHorizAnalysisEnum:219 return CreateKMatrix DiagnosticSSA();217 #ifdef _HAVE_STRESSBALANCE_ 218 case StressbalanceAnalysisEnum: 219 return CreateKMatrixStressbalanceSSA(); 220 220 break; 221 case DiagnosticSIAAnalysisEnum:222 return CreateKMatrix DiagnosticSIA();221 case StressbalanceSIAAnalysisEnum: 222 return CreateKMatrixStressbalanceSIA(); 223 223 break; 224 224 #endif … … 357 357 /*Just branch to the correct load generator, according to the type of analysis we are carrying out: */ 358 358 switch(analysis_type){ 359 #ifdef _HAVE_ DIAGNOSTIC_360 case DiagnosticHorizAnalysisEnum:361 return CreatePVector DiagnosticSSA();359 #ifdef _HAVE_STRESSBALANCE_ 360 case StressbalanceAnalysisEnum: 361 return CreatePVectorStressbalanceSSA(); 362 362 break; 363 case DiagnosticSIAAnalysisEnum:364 return CreatePVector DiagnosticSIA();363 case StressbalanceSIAAnalysisEnum: 364 return CreatePVectorStressbalanceSIA(); 365 365 break; 366 366 #endif … … 472 472 /*Just branch to the correct element stiffness matrix generator, according to the type of analysis we are carrying out: */ 473 473 switch(analysis_type){ 474 #ifdef _HAVE_ DIAGNOSTIC_475 case DiagnosticHorizAnalysisEnum:476 Ke=CreateJacobian DiagnosticSSA();474 #ifdef _HAVE_STRESSBALANCE_ 475 case StressbalanceAnalysisEnum: 476 Ke=CreateJacobianStressbalanceSSA(); 477 477 break; 478 478 #endif … … 1248 1248 /*Just branch to the correct InputUpdateFromSolution generator, according to the type of analysis we are carrying out: */ 1249 1249 switch(analysis_type){ 1250 #ifdef _HAVE_ DIAGNOSTIC_1251 case DiagnosticHorizAnalysisEnum:1252 GetSolutionFromInputs DiagnosticHoriz(solution);1250 #ifdef _HAVE_STRESSBALANCE_ 1251 case StressbalanceAnalysisEnum: 1252 GetSolutionFromInputsStressbalanceHoriz(solution); 1253 1253 break; 1254 case DiagnosticSIAAnalysisEnum:1255 GetSolutionFromInputs DiagnosticSIA(solution);1254 case StressbalanceSIAAnalysisEnum: 1255 GetSolutionFromInputsStressbalanceSIA(solution); 1256 1256 break; 1257 1257 #endif … … 1569 1569 /*Just branch to the correct InputUpdateFromSolution generator, according to the type of analysis we are carrying out: */ 1570 1570 switch(analysis_type){ 1571 #ifdef _HAVE_ DIAGNOSTIC_1572 case DiagnosticHorizAnalysisEnum:1573 InputUpdateFromSolution DiagnosticHoriz(solution);1571 #ifdef _HAVE_STRESSBALANCE_ 1572 case StressbalanceAnalysisEnum: 1573 InputUpdateFromSolutionStressbalanceHoriz(solution); 1574 1574 break; 1575 case DiagnosticSIAAnalysisEnum:1576 InputUpdateFromSolution DiagnosticHoriz(solution);1575 case StressbalanceSIAAnalysisEnum: 1576 InputUpdateFromSolutionStressbalanceHoriz(solution); 1577 1577 break; 1578 1578 #endif … … 2463 2463 switch(analysis_type){ 2464 2464 2465 case DiagnosticHorizAnalysisEnum:2465 case StressbalanceAnalysisEnum: 2466 2466 2467 2467 /*default vx,vy and vz: either observation or 0 */ … … 2944 2944 #endif 2945 2945 2946 #ifdef _HAVE_ DIAGNOSTIC_2947 /*FUNCTION Tria::CreateKMatrix DiagnosticSSA {{{*/2948 ElementMatrix* Tria::CreateKMatrix DiagnosticSSA(void){2946 #ifdef _HAVE_STRESSBALANCE_ 2947 /*FUNCTION Tria::CreateKMatrixStressbalanceSSA {{{*/ 2948 ElementMatrix* Tria::CreateKMatrixStressbalanceSSA(void){ 2949 2949 2950 2950 /*compute all stiffness matrices for this element*/ 2951 ElementMatrix* Ke1=CreateKMatrix DiagnosticSSAViscous();2952 ElementMatrix* Ke2=CreateKMatrix DiagnosticSSAFriction();2951 ElementMatrix* Ke1=CreateKMatrixStressbalanceSSAViscous(); 2952 ElementMatrix* Ke2=CreateKMatrixStressbalanceSSAFriction(); 2953 2953 ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2); 2954 2954 … … 2959 2959 } 2960 2960 /*}}}*/ 2961 /*FUNCTION Tria::CreateKMatrix DiagnosticSSAViscous{{{*/2962 ElementMatrix* Tria::CreateKMatrix DiagnosticSSAViscous(void){2961 /*FUNCTION Tria::CreateKMatrixStressbalanceSSAViscous{{{*/ 2962 ElementMatrix* Tria::CreateKMatrixStressbalanceSSAViscous(void){ 2963 2963 2964 2964 /*Intermediaries*/ … … 2987 2987 Input* vxold_input=inputs->GetInput(VxPicardEnum); _assert_(vxold_input); 2988 2988 Input* vyold_input=inputs->GetInput(VyPicardEnum); _assert_(vyold_input); 2989 this->parameters->FindParam(&viscosity_overshoot, DiagnosticViscosityOvershootEnum);2989 this->parameters->FindParam(&viscosity_overshoot,StressbalanceViscosityOvershootEnum); 2990 2990 2991 2991 /* Start looping on the number of gaussian points: */ … … 3026 3026 } 3027 3027 /*}}}*/ 3028 /*FUNCTION Tria::CreateKMatrix DiagnosticSSAFriction {{{*/3029 ElementMatrix* Tria::CreateKMatrix DiagnosticSSAFriction(void){3028 /*FUNCTION Tria::CreateKMatrixStressbalanceSSAFriction {{{*/ 3029 ElementMatrix* Tria::CreateKMatrixStressbalanceSSAFriction(void){ 3030 3030 3031 3031 /*Intermediaries*/ … … 3114 3114 } 3115 3115 /*}}}*/ 3116 /*FUNCTION Tria::CreateKMatrix DiagnosticSIA{{{*/3117 ElementMatrix* Tria::CreateKMatrix DiagnosticSIA(void){3116 /*FUNCTION Tria::CreateKMatrixStressbalanceSIA{{{*/ 3117 ElementMatrix* Tria::CreateKMatrixStressbalanceSIA(void){ 3118 3118 3119 3119 /*Intermediaries*/ … … 3138 3138 } 3139 3139 /*}}}*/ 3140 /*FUNCTION Tria::CreatePVector DiagnosticSSA {{{*/3141 ElementVector* Tria::CreatePVector DiagnosticSSA(){3140 /*FUNCTION Tria::CreatePVectorStressbalanceSSA {{{*/ 3141 ElementVector* Tria::CreatePVectorStressbalanceSSA(){ 3142 3142 3143 3143 /*compute all load vectors for this element*/ 3144 ElementVector* pe1=CreatePVector DiagnosticSSADrivingStress();3145 ElementVector* pe2=CreatePVector DiagnosticSSAFront();3144 ElementVector* pe1=CreatePVectorStressbalanceSSADrivingStress(); 3145 ElementVector* pe2=CreatePVectorStressbalanceSSAFront(); 3146 3146 ElementVector* pe =new ElementVector(pe1,pe2); 3147 3147 … … 3152 3152 } 3153 3153 /*}}}*/ 3154 /*FUNCTION Tria::CreatePVector DiagnosticSSADrivingStress {{{*/3155 ElementVector* Tria::CreatePVector DiagnosticSSADrivingStress(){3154 /*FUNCTION Tria::CreatePVectorStressbalanceSSADrivingStress {{{*/ 3155 ElementVector* Tria::CreatePVectorStressbalanceSSADrivingStress(){ 3156 3156 3157 3157 /*Intermediaries */ … … 3207 3207 } 3208 3208 /*}}}*/ 3209 /*FUNCTION Tria::CreatePVector DiagnosticSSAFront {{{*/3210 ElementVector* Tria::CreatePVector DiagnosticSSAFront(){3209 /*FUNCTION Tria::CreatePVectorStressbalanceSSAFront {{{*/ 3210 ElementVector* Tria::CreatePVectorStressbalanceSSAFront(){ 3211 3211 3212 3212 /*Intermediaries */ … … 3287 3287 } 3288 3288 /*}}}*/ 3289 /*FUNCTION Tria::CreatePVector DiagnosticSIA{{{*/3290 ElementVector* Tria::CreatePVector DiagnosticSIA(void){3289 /*FUNCTION Tria::CreatePVectorStressbalanceSIA{{{*/ 3290 ElementVector* Tria::CreatePVectorStressbalanceSIA(void){ 3291 3291 3292 3292 /*Intermediaries */ … … 3339 3339 } 3340 3340 /*}}}*/ 3341 /*FUNCTION Tria::CreateJacobian DiagnosticSSA{{{*/3342 ElementMatrix* Tria::CreateJacobian DiagnosticSSA(void){3341 /*FUNCTION Tria::CreateJacobianStressbalanceSSA{{{*/ 3342 ElementMatrix* Tria::CreateJacobianStressbalanceSSA(void){ 3343 3343 3344 3344 /*Intermediaries */ … … 3358 3358 3359 3359 /*Initialize Element matrix, vectors and Gaussian points*/ 3360 ElementMatrix* Ke=CreateKMatrix DiagnosticSSA(); //Initialize Jacobian with regular SSA (first part of the Gateau derivative)3360 ElementMatrix* Ke=CreateKMatrixStressbalanceSSA(); //Initialize Jacobian with regular SSA (first part of the Gateau derivative) 3361 3361 IssmDouble* dbasis = xNew<IssmDouble>(2*numnodes); 3362 3362 … … 3406 3406 } 3407 3407 /*}}}*/ 3408 /*FUNCTION Tria::GetSolutionFromInputs DiagnosticHoriz{{{*/3409 void Tria::GetSolutionFromInputs DiagnosticHoriz(Vector<IssmDouble>* solution){3408 /*FUNCTION Tria::GetSolutionFromInputsStressbalanceHoriz{{{*/ 3409 void Tria::GetSolutionFromInputsStressbalanceHoriz(Vector<IssmDouble>* solution){ 3410 3410 3411 3411 IssmDouble vx,vy; … … 3445 3445 } 3446 3446 /*}}}*/ 3447 /*FUNCTION Tria::GetSolutionFromInputs DiagnosticSIA{{{*/3448 void Tria::GetSolutionFromInputs DiagnosticSIA(Vector<IssmDouble>* solution){3447 /*FUNCTION Tria::GetSolutionFromInputsStressbalanceSIA{{{*/ 3448 void Tria::GetSolutionFromInputsStressbalanceSIA(Vector<IssmDouble>* solution){ 3449 3449 3450 3450 const int numdof=NDOF2*NUMVERTICES; … … 3484 3484 } 3485 3485 /*}}}*/ 3486 /*FUNCTION Tria::InputUpdateFromSolution DiagnosticHoriz {{{*/3487 void Tria::InputUpdateFromSolution DiagnosticHoriz(IssmDouble* solution){3486 /*FUNCTION Tria::InputUpdateFromSolutionStressbalanceHoriz {{{*/ 3487 void Tria::InputUpdateFromSolutionStressbalanceHoriz(IssmDouble* solution){ 3488 3488 3489 3489 int i; … … 3556 3556 } 3557 3557 /*}}}*/ 3558 /*FUNCTION Tria::InputUpdateFromSolution DiagnosticSIA {{{*/3559 void Tria::InputUpdateFromSolution DiagnosticSIA(IssmDouble* solution){3558 /*FUNCTION Tria::InputUpdateFromSolutionStressbalanceSIA {{{*/ 3559 void Tria::InputUpdateFromSolutionStressbalanceSIA(IssmDouble* solution){ 3560 3560 3561 3561 int i; … … 5284 5284 /*Initialize Jacobian with regular SSA (first part of the Gateau derivative)*/ 5285 5285 parameters->FindParam(&incomplete_adjoint,InversionIncompleteAdjointEnum); 5286 ElementMatrix* Ke=CreateKMatrix DiagnosticSSA();5286 ElementMatrix* Ke=CreateKMatrixStressbalanceSSA(); 5287 5287 if(incomplete_adjoint) return Ke; 5288 5288 -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r15767 r15771 222 222 void UpdateConstraints(void); 223 223 224 #ifdef _HAVE_ DIAGNOSTIC_225 ElementMatrix* CreateKMatrix DiagnosticSSA(void);226 ElementMatrix* CreateKMatrix DiagnosticSSAViscous(void);227 ElementMatrix* CreateKMatrix DiagnosticSSAFriction(void);228 ElementMatrix* CreateKMatrix DiagnosticSIA(void);229 ElementVector* CreatePVector DiagnosticSSA(void);230 ElementVector* CreatePVector DiagnosticSSADrivingStress(void);231 ElementVector* CreatePVector DiagnosticSSAFront(void);232 ElementVector* CreatePVector DiagnosticSIA(void);233 ElementMatrix* CreateJacobian DiagnosticSSA(void);234 void GetSolutionFromInputs DiagnosticHoriz(Vector<IssmDouble>* solution);235 void GetSolutionFromInputs DiagnosticSIA(Vector<IssmDouble>* solution);236 void InputUpdateFromSolution DiagnosticHoriz( IssmDouble* solution);237 void InputUpdateFromSolution DiagnosticSIA( IssmDouble* solution);224 #ifdef _HAVE_STRESSBALANCE_ 225 ElementMatrix* CreateKMatrixStressbalanceSSA(void); 226 ElementMatrix* CreateKMatrixStressbalanceSSAViscous(void); 227 ElementMatrix* CreateKMatrixStressbalanceSSAFriction(void); 228 ElementMatrix* CreateKMatrixStressbalanceSIA(void); 229 ElementVector* CreatePVectorStressbalanceSSA(void); 230 ElementVector* CreatePVectorStressbalanceSSADrivingStress(void); 231 ElementVector* CreatePVectorStressbalanceSSAFront(void); 232 ElementVector* CreatePVectorStressbalanceSIA(void); 233 ElementMatrix* CreateJacobianStressbalanceSSA(void); 234 void GetSolutionFromInputsStressbalanceHoriz(Vector<IssmDouble>* solution); 235 void GetSolutionFromInputsStressbalanceSIA(Vector<IssmDouble>* solution); 236 void InputUpdateFromSolutionStressbalanceHoriz( IssmDouble* solution); 237 void InputUpdateFromSolutionStressbalanceSIA( IssmDouble* solution); 238 238 #endif 239 239 -
issm/trunk-jpl/src/c/classes/Loads/Pengrid.cpp
r15740 r15771 261 261 pe=PenaltyCreatePVectorMelting(kmax); 262 262 break; 263 case DiagnosticHorizAnalysisEnum: case AdjointHorizAnalysisEnum:263 case StressbalanceAnalysisEnum: case AdjointHorizAnalysisEnum: 264 264 break; 265 265 #endif … … 418 418 this->parameters->FindParam(&analysis_type,AnalysisTypeEnum); 419 419 420 if (analysis_type== DiagnosticHorizAnalysisEnum){420 if (analysis_type==StressbalanceAnalysisEnum){ 421 421 /*No penalty to check*/ 422 422 return; -
issm/trunk-jpl/src/c/classes/Loads/Penpair.cpp
r15767 r15771 173 173 174 174 switch(analysis_type){ 175 case DiagnosticHorizAnalysisEnum:176 Ke=PenaltyCreateKMatrix DiagnosticHoriz(kmax);175 case StressbalanceAnalysisEnum: 176 Ke=PenaltyCreateKMatrixStressbalanceHoriz(kmax); 177 177 break; 178 178 case MasstransportAnalysisEnum: … … 292 292 293 293 /*Penpair management:*/ 294 /*FUNCTION Penpair::PenaltyCreateKMatrix DiagnosticHoriz{{{*/295 ElementMatrix* Penpair::PenaltyCreateKMatrix DiagnosticHoriz(IssmDouble kmax){294 /*FUNCTION Penpair::PenaltyCreateKMatrixStressbalanceHoriz{{{*/ 295 ElementMatrix* Penpair::PenaltyCreateKMatrixStressbalanceHoriz(IssmDouble kmax){ 296 296 297 297 int approximation0=nodes[0]->GetApproximation(); … … 301 301 case SSAApproximationEnum: 302 302 switch(approximation1){ 303 case SSAApproximationEnum: return PenaltyCreateKMatrix DiagnosticSSAHO(kmax);304 case HOApproximationEnum: return PenaltyCreateKMatrix DiagnosticSSAHO(kmax);303 case SSAApproximationEnum: return PenaltyCreateKMatrixStressbalanceSSAHO(kmax); 304 case HOApproximationEnum: return PenaltyCreateKMatrixStressbalanceSSAHO(kmax); 305 305 default: _error_("not supported yet"); 306 306 } 307 307 case HOApproximationEnum: 308 308 switch(approximation1){ 309 case SSAApproximationEnum: return PenaltyCreateKMatrix DiagnosticSSAHO(kmax);310 case HOApproximationEnum: return PenaltyCreateKMatrix DiagnosticSSAHO(kmax);309 case SSAApproximationEnum: return PenaltyCreateKMatrixStressbalanceSSAHO(kmax); 310 case HOApproximationEnum: return PenaltyCreateKMatrixStressbalanceSSAHO(kmax); 311 311 default: _error_("not supported yet"); 312 312 } 313 313 case FSApproximationEnum: 314 314 switch(approximation1){ 315 case FSApproximationEnum: return PenaltyCreateKMatrix DiagnosticFS(kmax);316 case NoneApproximationEnum: return PenaltyCreateKMatrix DiagnosticFS(kmax);315 case FSApproximationEnum: return PenaltyCreateKMatrixStressbalanceFS(kmax); 316 case NoneApproximationEnum: return PenaltyCreateKMatrixStressbalanceFS(kmax); 317 317 default: _error_("not supported yet"); 318 318 } 319 319 case NoneApproximationEnum: 320 320 switch(approximation1){ 321 case FSApproximationEnum: return PenaltyCreateKMatrix DiagnosticFS(kmax);322 case NoneApproximationEnum: return PenaltyCreateKMatrix DiagnosticFS(kmax);321 case FSApproximationEnum: return PenaltyCreateKMatrixStressbalanceFS(kmax); 322 case NoneApproximationEnum: return PenaltyCreateKMatrixStressbalanceFS(kmax); 323 323 default: _error_("not supported yet"); 324 324 } … … 327 327 } 328 328 /*}}}*/ 329 /*FUNCTION Penpair::PenaltyCreateKMatrix DiagnosticSSAHO {{{*/330 ElementMatrix* Penpair::PenaltyCreateKMatrix DiagnosticSSAHO(IssmDouble kmax){329 /*FUNCTION Penpair::PenaltyCreateKMatrixStressbalanceSSAHO {{{*/ 330 ElementMatrix* Penpair::PenaltyCreateKMatrixStressbalanceSSAHO(IssmDouble kmax){ 331 331 332 332 const int numdof=NUMVERTICES*NDOF2; … … 337 337 338 338 /*recover parameters: */ 339 parameters->FindParam(&penalty_offset, DiagnosticPenaltyFactorEnum);339 parameters->FindParam(&penalty_offset,StressbalancePenaltyFactorEnum); 340 340 341 341 //Create elementary matrix: add penalty to … … 354 354 } 355 355 /*}}}*/ 356 /*FUNCTION Penpair::PenaltyCreateKMatrix DiagnosticFS {{{*/357 ElementMatrix* Penpair::PenaltyCreateKMatrix DiagnosticFS(IssmDouble kmax){356 /*FUNCTION Penpair::PenaltyCreateKMatrixStressbalanceFS {{{*/ 357 ElementMatrix* Penpair::PenaltyCreateKMatrixStressbalanceFS(IssmDouble kmax){ 358 358 359 359 const int numdof=NUMVERTICES*NDOF4; … … 364 364 365 365 /*recover parameters: */ 366 parameters->FindParam(&penalty_offset, DiagnosticPenaltyFactorEnum);366 parameters->FindParam(&penalty_offset,StressbalancePenaltyFactorEnum); 367 367 368 368 //Create elementary matrix: add penalty to -
issm/trunk-jpl/src/c/classes/Loads/Penpair.h
r15767 r15771 67 67 /*}}}*/ 68 68 /*Penpair management: {{{*/ 69 ElementMatrix* PenaltyCreateKMatrix DiagnosticHoriz(IssmDouble kmax);70 ElementMatrix* PenaltyCreateKMatrix DiagnosticSSAHO(IssmDouble kmax);71 ElementMatrix* PenaltyCreateKMatrix DiagnosticFS(IssmDouble kmax);69 ElementMatrix* PenaltyCreateKMatrixStressbalanceHoriz(IssmDouble kmax); 70 ElementMatrix* PenaltyCreateKMatrixStressbalanceSSAHO(IssmDouble kmax); 71 ElementMatrix* PenaltyCreateKMatrixStressbalanceFS(IssmDouble kmax); 72 72 ElementMatrix* PenaltyCreateKMatrixMasstransport(IssmDouble kmax); 73 73 /*}}}*/ -
issm/trunk-jpl/src/c/classes/Loads/Riftfront.cpp
r15740 r15771 51 51 52 52 /*Fetch parameters: */ 53 iomodel->Constant(&penalty_lock, DiagnosticRiftPenaltyLockEnum);53 iomodel->Constant(&penalty_lock,StressbalanceRiftPenaltyLockEnum); 54 54 55 55 /*Ok, retrieve all the data needed to add a penalty between the two nodes: */ … … 308 308 309 309 switch(analysis_type){ 310 case DiagnosticHorizAnalysisEnum:311 Ke=PenaltyCreateKMatrix DiagnosticHoriz(kmax);310 case StressbalanceAnalysisEnum: 311 Ke=PenaltyCreateKMatrixStressbalanceHoriz(kmax); 312 312 break; 313 313 case AdjointHorizAnalysisEnum: 314 Ke=PenaltyCreateKMatrix DiagnosticHoriz(kmax);314 Ke=PenaltyCreateKMatrixStressbalanceHoriz(kmax); 315 315 break; 316 316 default: … … 334 334 335 335 switch(analysis_type){ 336 case DiagnosticHorizAnalysisEnum:337 pe=PenaltyCreatePVector DiagnosticHoriz(kmax);336 case StressbalanceAnalysisEnum: 337 pe=PenaltyCreatePVectorStressbalanceHoriz(kmax); 338 338 break; 339 339 case AdjointHorizAnalysisEnum: … … 437 437 438 438 /*Riftfront numerics*/ 439 /*FUNCTION Riftfront::PenaltyCreateKMatrix DiagnosticHoriz {{{*/440 ElementMatrix* Riftfront::PenaltyCreateKMatrix DiagnosticHoriz(IssmDouble kmax){439 /*FUNCTION Riftfront::PenaltyCreateKMatrixStressbalanceHoriz {{{*/ 440 ElementMatrix* Riftfront::PenaltyCreateKMatrixStressbalanceHoriz(IssmDouble kmax){ 441 441 442 442 const int numdof = NDOF2*NUMVERTICES; … … 461 461 462 462 /*Get some parameters: */ 463 this->parameters->FindParam(&penalty_offset, DiagnosticPenaltyFactorEnum);463 this->parameters->FindParam(&penalty_offset,StressbalancePenaltyFactorEnum); 464 464 this->inputs->GetInputValue(&friction,FrictionEnum); 465 465 tria1->GetInputValue(&h[0],nodes[0],ThicknessEnum); … … 518 518 } 519 519 /*}}}*/ 520 /*FUNCTION Riftfront::PenaltyCreatePVector DiagnosticHoriz {{{*/521 ElementVector* Riftfront::PenaltyCreatePVector DiagnosticHoriz(IssmDouble kmax){520 /*FUNCTION Riftfront::PenaltyCreatePVectorStressbalanceHoriz {{{*/ 521 ElementVector* Riftfront::PenaltyCreatePVectorStressbalanceHoriz(IssmDouble kmax){ 522 522 523 523 const int numdof = NDOF2*NUMVERTICES; -
issm/trunk-jpl/src/c/classes/Loads/Riftfront.h
r13925 r15771 89 89 /*Riftfront specific routines: {{{*/ 90 90 bool PreStable(); 91 ElementMatrix* PenaltyCreateKMatrix DiagnosticHoriz(IssmDouble kmax);92 ElementVector* PenaltyCreatePVector DiagnosticHoriz(IssmDouble kmax);91 ElementMatrix* PenaltyCreateKMatrixStressbalanceHoriz(IssmDouble kmax); 92 ElementVector* PenaltyCreatePVectorStressbalanceHoriz(IssmDouble kmax); 93 93 void SetPreStable(); 94 94 int PreConstrain(int* punstable); -
issm/trunk-jpl/src/c/classes/Node.cpp
r15767 r15771 42 42 gsize=this->indexing.gsize; 43 43 44 if(analysis_type== DiagnosticHorizAnalysisEnum)44 if(analysis_type==StressbalanceAnalysisEnum) 45 45 this->approximation=in_approximation; 46 46 else … … 54 54 this->inputs->AddInput(new BoolInput(MaskVertexongroundediceEnum,reCast<bool>(iomodel->Data(MaskVertexongroundediceEnum)[io_index]))); 55 55 56 /* DiagnosticHoriz*/57 #ifdef _HAVE_ DIAGNOSTIC_58 if(analysis_type== DiagnosticHorizAnalysisEnum){56 /*Stressbalance Horiz*/ 57 #ifdef _HAVE_STRESSBALANCE_ 58 if(analysis_type==StressbalanceAnalysisEnum){ 59 59 60 60 /*Coordinate system provided, convert to coord_system matrix*/ 61 _assert_(iomodel->Data( DiagnosticReferentialEnum));62 XZvectorsToCoordinateSystem(&this->coord_system[0][0],&iomodel->Data( DiagnosticReferentialEnum)[io_index*6]);61 _assert_(iomodel->Data(StressbalanceReferentialEnum)); 62 XZvectorsToCoordinateSystem(&this->coord_system[0][0],&iomodel->Data(StressbalanceReferentialEnum)[io_index*6]); 63 63 64 64 if(iomodel->dim==3){ … … 338 338 int Node::Sid(void){ return sid; } 339 339 /*}}}*/ 340 #ifdef _HAVE_ DIAGNOSTIC_340 #ifdef _HAVE_STRESSBALANCE_ 341 341 /*FUNCTION Node::GetCoordinateSystem{{{*/ 342 342 void Node::GetCoordinateSystem(IssmDouble* coord_system_out){ … … 972 972 } 973 973 /*}}}*/ 974 #ifdef _HAVE_ DIAGNOSTIC_974 #ifdef _HAVE_STRESSBALANCE_ 975 975 void TransformInvStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int cs_enum){/*{{{*/ 976 976 -
issm/trunk-jpl/src/c/classes/Node.h
r15583 r15771 68 68 void SetCurrentConfiguration(DataSet* nodes,Vertices* vertices); 69 69 int Sid(void); 70 #ifdef _HAVE_ DIAGNOSTIC_70 #ifdef _HAVE_STRESSBALANCE_ 71 71 void GetCoordinateSystem(IssmDouble* coord_system_out); 72 72 #endif … … 103 103 int* GetGlobalDofList(Node** nodes,int numnodes,int setenum,int approximation); 104 104 int GetNumberOfDofs(Node** nodes,int numnodes,int setenum,int approximation); 105 #ifdef _HAVE_ DIAGNOSTIC_105 #ifdef _HAVE_STRESSBALANCE_ 106 106 void TransformInvStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int cs_enum); 107 107 void TransformInvStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int* cs_array); -
issm/trunk-jpl/src/c/modules/ConstraintsStatex/ConstraintsStatex.cpp
r15104 r15771 20 20 21 21 /*recover parameters: */ 22 parameters->FindParam(&min_mechanical_constraints, DiagnosticRiftPenaltyThresholdEnum);22 parameters->FindParam(&min_mechanical_constraints,StressbalanceRiftPenaltyThresholdEnum); 23 23 parameters->FindParam(&analysis_type,AnalysisTypeEnum); 24 24 -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateDataSets.cpp
r15767 r15771 40 40 switch(analysis_type){ 41 41 42 #ifdef _HAVE_ DIAGNOSTIC_43 case DiagnosticHorizAnalysisEnum:44 CreateNodes DiagnosticHoriz(pnodes,iomodel);45 CreateConstraints DiagnosticHoriz(pconstraints,iomodel);46 CreateLoads DiagnosticHoriz(ploads,iomodel);47 UpdateElements DiagnosticHoriz(elements,iomodel,analysis_counter,analysis_type);42 #ifdef _HAVE_STRESSBALANCE_ 43 case StressbalanceAnalysisEnum: 44 CreateNodesStressbalance(pnodes,iomodel); 45 CreateConstraintsStressbalance(pconstraints,iomodel); 46 CreateLoadsStressbalance(ploads,iomodel); 47 UpdateElementsStressbalance(elements,iomodel,analysis_counter,analysis_type); 48 48 break; 49 49 50 case DiagnosticVertAnalysisEnum:51 CreateNodes DiagnosticVert(pnodes, iomodel);52 CreateConstraints DiagnosticVert(pconstraints,iomodel);53 CreateLoads DiagnosticVert(ploads,iomodel);54 UpdateElements DiagnosticVert(elements,iomodel,analysis_counter,analysis_type);50 case StressbalanceVerticalAnalysisEnum: 51 CreateNodesStressbalanceVertical(pnodes, iomodel); 52 CreateConstraintsStressbalanceVertical(pconstraints,iomodel); 53 CreateLoadsStressbalanceVertical(ploads,iomodel); 54 UpdateElementsStressbalanceVertical(elements,iomodel,analysis_counter,analysis_type); 55 55 break; 56 56 57 case DiagnosticSIAAnalysisEnum:58 CreateNodes DiagnosticSIA(pnodes, iomodel);59 CreateConstraints DiagnosticSIA(pconstraints,iomodel);60 CreateLoads DiagnosticSIA(ploads,iomodel);61 UpdateElements DiagnosticSIA(elements,iomodel,analysis_counter,analysis_type);57 case StressbalanceSIAAnalysisEnum: 58 CreateNodesStressbalanceSIA(pnodes, iomodel); 59 CreateConstraintsStressbalanceSIA(pconstraints,iomodel); 60 CreateLoadsStressbalanceSIA(ploads,iomodel); 61 UpdateElementsStressbalanceSIA(elements,iomodel,analysis_counter,analysis_type); 62 62 break; 63 63 #endif -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
r15595 r15771 1 1 /* 2 * CreateElementsNodesAndMaterials DiagnosticHoriz.c:2 * CreateElementsNodesAndMaterialsStressbalanceHoriz.c: 3 3 */ 4 4 -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
r15767 r15771 52 52 parameters->AddObject(iomodel->CopyConstantObject(FlowequationFeFSEnum)); 53 53 parameters->AddObject(iomodel->CopyConstantObject(SettingsOutputFrequencyEnum)); 54 parameters->AddObject(iomodel->CopyConstantObject( DiagnosticRestolEnum));55 parameters->AddObject(iomodel->CopyConstantObject( DiagnosticReltolEnum));56 parameters->AddObject(iomodel->CopyConstantObject( DiagnosticAbstolEnum));57 parameters->AddObject(iomodel->CopyConstantObject( DiagnosticIsnewtonEnum));58 parameters->AddObject(iomodel->CopyConstantObject( DiagnosticMaxiterEnum));54 parameters->AddObject(iomodel->CopyConstantObject(StressbalanceRestolEnum)); 55 parameters->AddObject(iomodel->CopyConstantObject(StressbalanceReltolEnum)); 56 parameters->AddObject(iomodel->CopyConstantObject(StressbalanceAbstolEnum)); 57 parameters->AddObject(iomodel->CopyConstantObject(StressbalanceIsnewtonEnum)); 58 parameters->AddObject(iomodel->CopyConstantObject(StressbalanceMaxiterEnum)); 59 59 parameters->AddObject(iomodel->CopyConstantObject(SteadystateReltolEnum)); 60 60 parameters->AddObject(iomodel->CopyConstantObject(SteadystateMaxiterEnum)); … … 67 67 parameters->AddObject(iomodel->CopyConstantObject(MasstransportHydrostaticAdjustmentEnum)); 68 68 parameters->AddObject(iomodel->CopyConstantObject(MasstransportStabilizationEnum)); 69 parameters->AddObject(iomodel->CopyConstantObject( DiagnosticPenaltyFactorEnum));69 parameters->AddObject(iomodel->CopyConstantObject(StressbalancePenaltyFactorEnum)); 70 70 parameters->AddObject(iomodel->CopyConstantObject(MasstransportMinThicknessEnum)); 71 71 parameters->AddObject(iomodel->CopyConstantObject(MasstransportPenaltyFactorEnum)); … … 81 81 parameters->AddObject(iomodel->CopyConstantObject(ThermalPenaltyThresholdEnum)); 82 82 parameters->AddObject(iomodel->CopyConstantObject(ThermalPenaltyLockEnum)); 83 parameters->AddObject(iomodel->CopyConstantObject( DiagnosticRiftPenaltyThresholdEnum));84 parameters->AddObject(iomodel->CopyConstantObject( DiagnosticFSreconditioningEnum));85 parameters->AddObject(iomodel->CopyConstantObject( DiagnosticShelfDampeningEnum));86 parameters->AddObject(iomodel->CopyConstantObject( DiagnosticViscosityOvershootEnum));83 parameters->AddObject(iomodel->CopyConstantObject(StressbalanceRiftPenaltyThresholdEnum)); 84 parameters->AddObject(iomodel->CopyConstantObject(StressbalanceFSreconditioningEnum)); 85 parameters->AddObject(iomodel->CopyConstantObject(StressbalanceShelfDampeningEnum)); 86 parameters->AddObject(iomodel->CopyConstantObject(StressbalanceViscosityOvershootEnum)); 87 87 parameters->AddObject(iomodel->CopyConstantObject(SettingsWaitonlockEnum)); 88 88 parameters->AddObject(iomodel->CopyConstantObject(MeshNumberofelementsEnum)); … … 92 92 parameters->AddObject(iomodel->CopyConstantObject(SettingsResultsAsPatchesEnum)); 93 93 parameters->AddObject(iomodel->CopyConstantObject(GroundinglineMigrationEnum)); 94 parameters->AddObject(iomodel->CopyConstantObject(TransientIs diagnosticEnum));94 parameters->AddObject(iomodel->CopyConstantObject(TransientIsstressbalanceEnum)); 95 95 parameters->AddObject(iomodel->CopyConstantObject(TransientIsmasstransportEnum)); 96 96 parameters->AddObject(iomodel->CopyConstantObject(TransientIsthermalEnum)); … … 147 147 148 148 /*Requested outputs*/ 149 iomodel->FetchData(&requestedoutputs,&numoutputs,NULL, DiagnosticRequestedOutputsEnum);150 parameters->AddObject(new IntParam( DiagnosticNumRequestedOutputsEnum,numoutputs));151 if(numoutputs)parameters->AddObject(new IntVecParam( DiagnosticRequestedOutputsEnum,requestedoutputs,numoutputs));152 iomodel->DeleteData(requestedoutputs, DiagnosticRequestedOutputsEnum);149 iomodel->FetchData(&requestedoutputs,&numoutputs,NULL,StressbalanceRequestedOutputsEnum); 150 parameters->AddObject(new IntParam(StressbalanceNumRequestedOutputsEnum,numoutputs)); 151 if(numoutputs)parameters->AddObject(new IntVecParam(StressbalanceRequestedOutputsEnum,requestedoutputs,numoutputs)); 152 iomodel->DeleteData(requestedoutputs,StressbalanceRequestedOutputsEnum); 153 153 154 154 iomodel->FetchData(&requestedoutputs,&numoutputs,NULL,TransientRequestedOutputsEnum); -
issm/trunk-jpl/src/c/modules/ModelProcessorx/DistributeNumDofs.cpp
r15767 r15771 16 16 /*ok, according to analysis type: */ 17 17 switch(analysis_type){ 18 case DiagnosticHorizAnalysisEnum:18 case StressbalanceAnalysisEnum: 19 19 switch(node_type){ 20 20 case SSAApproximationEnum: … … 66 66 break; 67 67 default: 68 _error_("Approximationtype " << node_type << " (" << EnumToStringx(node_type) << ") not implemented yet for DiagnosticHoriz");68 _error_("Approximationtype " << node_type << " (" << EnumToStringx(node_type) << ") not implemented yet for StressbalanceHoriz"); 69 69 70 70 } 71 71 break; 72 case DiagnosticVertAnalysisEnum:72 case StressbalanceVerticalAnalysisEnum: 73 73 numdofs=1; 74 74 break; 75 case DiagnosticSIAAnalysisEnum:75 case StressbalanceSIAAnalysisEnum: 76 76 numdofs=2; 77 77 break; -
issm/trunk-jpl/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp
r15767 r15771 110 110 * penpair has 2 nodes that are poointing toward 2 vertices. 111 111 * The 2 vertices must be in the same cpu as the penpair*/ 112 iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL, DiagnosticVertexPairingEnum);112 iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,StressbalanceVertexPairingEnum); 113 113 for(i=0;i<numvertex_pairing;i++){ 114 114 if(my_vertices[vertex_pairing[2*i+0]-1] && !my_vertices[vertex_pairing[2*i+1]-1]){ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp
r15767 r15771 16 16 17 17 int i,analysis_type,verbose; 18 bool isthermal,ismasstransport,is diagnostic,isgroundingline,isenthalpy;18 bool isthermal,ismasstransport,isstressbalance,isgroundingline,isenthalpy; 19 19 20 20 /*output: */ … … 35 35 iomodel->Constant(&isenthalpy,ThermalIsenthalpyEnum); 36 36 iomodel->Constant(&ismasstransport,TransientIsmasstransportEnum); 37 iomodel->Constant(&is diagnostic,TransientIsdiagnosticEnum);37 iomodel->Constant(&isstressbalance,TransientIsstressbalanceEnum); 38 38 iomodel->Constant(&isgroundingline,TransientIsgroundinglineEnum); 39 39 … … 57 57 if(solution_type==TransientSolutionEnum && analysis_type==EnthalpyAnalysisEnum && isenthalpy==false) continue; 58 58 if(solution_type==TransientSolutionEnum && analysis_type==MasstransportAnalysisEnum && ismasstransport==false && isgroundingline==false) continue; 59 if(solution_type==TransientSolutionEnum && analysis_type== DiagnosticHorizAnalysisEnum && isdiagnostic==false) continue;60 if(solution_type==TransientSolutionEnum && analysis_type== DiagnosticVertAnalysisEnum && isdiagnostic==false) continue;61 if(solution_type==TransientSolutionEnum && analysis_type== DiagnosticSIAAnalysisEnum && isdiagnostic==false) continue;59 if(solution_type==TransientSolutionEnum && analysis_type==StressbalanceAnalysisEnum && isstressbalance==false) continue; 60 if(solution_type==TransientSolutionEnum && analysis_type==StressbalanceVerticalAnalysisEnum && isstressbalance==false) continue; 61 if(solution_type==TransientSolutionEnum && analysis_type==StressbalanceSIAAnalysisEnum && isstressbalance==false) continue; 62 62 if(solution_type==SteadystateSolutionEnum && analysis_type==ThermalAnalysisEnum && isenthalpy==true) continue; 63 63 if(solution_type==SteadystateSolutionEnum && analysis_type==MeltingAnalysisEnum && isenthalpy==true) continue; -
issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h
r15767 r15771 27 27 /*Creation of fem datasets: specialised drivers: */ 28 28 29 /* diagnostichorizontal*/30 void CreateNodes DiagnosticHoriz(Nodes** pnodes,IoModel* iomodel);31 void CreateConstraints DiagnosticHoriz(Constraints** pconstraints,IoModel* iomodel);32 void CreateLoads DiagnosticHoriz(Loads** ploads, IoModel* iomodel);33 void UpdateElements DiagnosticHoriz(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);29 /*stressbalance horizontal*/ 30 void CreateNodesStressbalance(Nodes** pnodes,IoModel* iomodel); 31 void CreateConstraintsStressbalance(Constraints** pconstraints,IoModel* iomodel); 32 void CreateLoadsStressbalance(Loads** ploads, IoModel* iomodel); 33 void UpdateElementsStressbalance(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type); 34 34 35 /* diagnosticvertical*/36 void CreateNodes DiagnosticVert(Nodes** pnodes,IoModel* iomodel);37 void CreateConstraints DiagnosticVert(Constraints** pconstraints,IoModel* iomodel);38 void CreateLoads DiagnosticVert(Loads** ploads, IoModel* iomodel);39 void UpdateElements DiagnosticVert(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);35 /*stressbalance vertical*/ 36 void CreateNodesStressbalanceVertical(Nodes** pnodes,IoModel* iomodel); 37 void CreateConstraintsStressbalanceVertical(Constraints** pconstraints,IoModel* iomodel); 38 void CreateLoadsStressbalanceVertical(Loads** ploads, IoModel* iomodel); 39 void UpdateElementsStressbalanceVertical(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type); 40 40 41 /* diagnosticSIA*/42 void CreateNodes DiagnosticSIA(Nodes** pnodes,IoModel* iomodel);43 void CreateConstraints DiagnosticSIA(Constraints** pconstraints,IoModel* iomodel);44 void CreateLoads DiagnosticSIA(Loads** ploads, IoModel* iomodel);45 void UpdateElements DiagnosticSIA(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);41 /*stressbalance SIA*/ 42 void CreateNodesStressbalanceSIA(Nodes** pnodes,IoModel* iomodel); 43 void CreateConstraintsStressbalanceSIA(Constraints** pconstraints,IoModel* iomodel); 44 void CreateLoadsStressbalanceSIA(Loads** ploads, IoModel* iomodel); 45 void UpdateElementsStressbalanceSIA(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type); 46 46 47 47 #ifdef _HAVE_GIA_ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/CreateConstraintsStressbalance.cpp
r15769 r15771 1 1 /* 2 * CreateConstraints DiagnosticHoriz.c:2 * CreateConstraintsStressbalance.c: 3 3 */ 4 4 … … 9 9 #include "../ModelProcessorx.h" 10 10 11 void CreateConstraints DiagnosticHoriz(Constraints** pconstraints, IoModel* iomodel){11 void CreateConstraintsStressbalance(Constraints** pconstraints, IoModel* iomodel){ 12 12 13 13 /*Intermediary*/ … … 45 45 iomodel->Constant(&g,ConstantsGEnum); 46 46 iomodel->Constant(&rho_ice,MaterialsRhoIceEnum); 47 iomodel->Constant(&FSreconditioning, DiagnosticFSreconditioningEnum);47 iomodel->Constant(&FSreconditioning,StressbalanceFSreconditioningEnum); 48 48 iomodel->Constant(&isSIA,FlowequationIsSIAEnum); 49 49 iomodel->Constant(&isSSA,FlowequationIsSSAEnum); … … 108 108 } 109 109 } 110 IoModelToConstraintsx(constraints,iomodel, DiagnosticSpcvxEnum,DiagnosticHorizAnalysisEnum,finiteelement,1);111 IoModelToConstraintsx(constraints,iomodel, DiagnosticSpcvyEnum,DiagnosticHorizAnalysisEnum,finiteelement,2);110 IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvxEnum,StressbalanceAnalysisEnum,finiteelement,1); 111 IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvyEnum,StressbalanceAnalysisEnum,finiteelement,2); 112 112 113 113 if(isFS){ 114 114 115 115 /*Constraint at the bedrock interface (v.n = vz = 0) (Coordinates will be updated according to the bed slope)*/ 116 iomodel->FetchData(&spcvz,&Mz,&Nz, DiagnosticSpcvzEnum);116 iomodel->FetchData(&spcvz,&Mz,&Nz,StressbalanceSpcvzEnum); 117 117 iomodel->FetchData(&vertices_type,NULL,NULL,FlowequationVertexEquationEnum); 118 118 iomodel->FetchData(&nodeonFS,NULL,NULL,FlowequationBorderFSEnum); … … 131 131 } 132 132 } 133 IoModelToConstraintsx(constraints,iomodel,spcvz,Mz,Nz, DiagnosticHorizAnalysisEnum,finiteelement,3);134 iomodel->DeleteData(spcvz, DiagnosticSpcvzEnum);133 IoModelToConstraintsx(constraints,iomodel,spcvz,Mz,Nz,StressbalanceAnalysisEnum,finiteelement,3); 134 iomodel->DeleteData(spcvz,StressbalanceSpcvzEnum); 135 135 iomodel->DeleteData(vertices_type,FlowequationVertexEquationEnum); 136 136 iomodel->DeleteData(nodeonFS,FlowequationBorderFSEnum); … … 148 148 if(iomodel->my_vertices[i]){ 149 149 if (reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum){ 150 constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+i+1,1,g*rho_ice*(surface[i]-z[i])/FSreconditioning, DiagnosticHorizAnalysisEnum));150 constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+i+1,1,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum)); 151 151 count++; 152 152 } … … 158 158 if(iomodel->my_vertices[i]){ 159 159 if (reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum){ 160 constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+i+1,1,g*rho_ice*(surface[i]-z[i])/FSreconditioning, DiagnosticHorizAnalysisEnum));160 constraints->AddObject(new SpcStatic(count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+i+1,1,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum)); 161 161 count++; 162 162 } … … 177 177 178 178 /*Constraints: fetch data: */ 179 iomodel->FetchData(&spcvx,&Mx,&Nx, DiagnosticSpcvxEnum);180 iomodel->FetchData(&spcvy,&My,&Ny, DiagnosticSpcvyEnum);181 iomodel->FetchData(&spcvz,&Mz,&Nz, DiagnosticSpcvzEnum);179 iomodel->FetchData(&spcvx,&Mx,&Nx,StressbalanceSpcvxEnum); 180 iomodel->FetchData(&spcvy,&My,&Ny,StressbalanceSpcvyEnum); 181 iomodel->FetchData(&spcvz,&Mz,&Nz,StressbalanceSpcvzEnum); 182 182 iomodel->FetchData(&nodeonSSA,NULL,NULL,FlowequationBorderSSAEnum); 183 183 if(iomodel->dim==3)iomodel->FetchData(&nodeonHO,NULL,NULL,FlowequationBorderHOEnum); … … 216 216 /*If grionSSA, spc HO dofs: 3 & 4*/ 217 217 if (reCast<int,IssmDouble>(nodeonHO[i])){ 218 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0, DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.219 count++; 220 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0, DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.221 count++; 222 if (!xIsNan<IssmDouble>(spcvx[i])){ 223 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i], DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.224 count++; 225 } 226 if (!xIsNan<IssmDouble>(spcvy[i])){ 227 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i], DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.218 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 219 count++; 220 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 221 count++; 222 if (!xIsNan<IssmDouble>(spcvx[i])){ 223 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 224 count++; 225 } 226 if (!xIsNan<IssmDouble>(spcvy[i])){ 227 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 228 228 count++; 229 229 } … … 231 231 } 232 232 else if (reCast<int,IssmDouble>(nodeonSSA[i])){ 233 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0, DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.234 count++; 235 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,0, DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.236 count++; 237 if (!xIsNan<IssmDouble>(spcvx[i])){ 238 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i], DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.239 count++; 240 } 241 if (!xIsNan<IssmDouble>(spcvy[i])){ 242 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i], DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.233 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 234 count++; 235 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 236 count++; 237 if (!xIsNan<IssmDouble>(spcvx[i])){ 238 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 239 count++; 240 } 241 if (!xIsNan<IssmDouble>(spcvy[i])){ 242 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 243 243 count++; 244 244 } … … 251 251 /*If grion,HO spc FS dofs: 3 4 & 5*/ 252 252 if (reCast<int,IssmDouble>(nodeonHO[i])){ 253 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0, DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.254 count++; 255 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,0, DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.256 count++; 257 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,0, DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.258 count++; 259 if (!xIsNan<IssmDouble>(spcvx[i])){ 260 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i], DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.261 count++; 262 } 263 if (!xIsNan<IssmDouble>(spcvy[i])){ 264 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i], DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.253 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 254 count++; 255 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 256 count++; 257 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 258 count++; 259 if (!xIsNan<IssmDouble>(spcvx[i])){ 260 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 261 count++; 262 } 263 if (!xIsNan<IssmDouble>(spcvy[i])){ 264 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 265 265 count++; 266 266 } … … 268 268 } 269 269 else if (reCast<int,IssmDouble>(nodeonFS[i])){ //spc HO nodes: 1 & 2 270 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0, DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.271 count++; 272 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0, DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.273 count++; 274 if (!xIsNan<IssmDouble>(spcvx[i])){ 275 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i], DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.276 count++; 277 } 278 if (!xIsNan<IssmDouble>(spcvy[i])){ 279 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i], DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.270 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 271 count++; 272 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 273 count++; 274 if (!xIsNan<IssmDouble>(spcvx[i])){ 275 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 276 count++; 277 } 278 if (!xIsNan<IssmDouble>(spcvy[i])){ 279 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 280 280 count++; 281 281 } 282 282 if (!xIsNan<IssmDouble>(spcvz[i])){ 283 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,spcvz[i], DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.283 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,spcvz[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 284 284 count++; 285 285 } … … 291 291 /*If grion,HO spc FS dofs: 3 4 & 5*/ 292 292 if (reCast<int,IssmDouble>(nodeonSSA[i])){ 293 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0, DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.294 count++; 295 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,0, DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.296 count++; 297 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,0, DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.298 count++; 299 if (!xIsNan<IssmDouble>(spcvx[i])){ 300 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i], DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.301 count++; 302 } 303 if (!xIsNan<IssmDouble>(spcvy[i])){ 304 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i], DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.293 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 294 count++; 295 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 296 count++; 297 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 298 count++; 299 if (!xIsNan<IssmDouble>(spcvx[i])){ 300 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 301 count++; 302 } 303 if (!xIsNan<IssmDouble>(spcvy[i])){ 304 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 305 305 count++; 306 306 } … … 308 308 } 309 309 else if (reCast<int,IssmDouble>(nodeonFS[i])){ //spc SSA nodes: 1 & 2 310 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0, DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.311 count++; 312 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0, DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.313 count++; 314 if (!xIsNan<IssmDouble>(spcvx[i])){ 315 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i], DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.316 count++; 317 } 318 if (!xIsNan<IssmDouble>(spcvy[i])){ 319 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i], DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.310 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 311 count++; 312 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 313 count++; 314 if (!xIsNan<IssmDouble>(spcvx[i])){ 315 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 316 count++; 317 } 318 if (!xIsNan<IssmDouble>(spcvy[i])){ 319 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,4,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 320 320 count++; 321 321 } 322 322 if (!xIsNan<IssmDouble>(spcvz[i])){ 323 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,spcvz[i], DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.323 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,spcvz[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 324 324 count++; 325 325 } … … 330 330 else{ 331 331 if (Mx==iomodel->numberofvertices && !xIsNan<IssmDouble>(spcvx[i])){ 332 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i], DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.332 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 333 333 count++; 334 334 … … 344 344 345 345 if(spcpresent){ 346 constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,Nx,timesx,values, DiagnosticHorizAnalysisEnum));346 constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,Nx,timesx,values,StressbalanceAnalysisEnum)); 347 347 count++; 348 348 } … … 350 350 } 351 351 else if (vertices_type[i]==SIAApproximationEnum){ 352 constraints->AddObject(new SpcDynamic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1, DiagnosticHorizAnalysisEnum));352 constraints->AddObject(new SpcDynamic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,StressbalanceAnalysisEnum)); 353 353 count++; 354 354 } 355 355 356 356 if (My==iomodel->numberofvertices && !xIsNan<IssmDouble>(spcvy[i])){ 357 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i], DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vy.357 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vy. 358 358 count++; 359 359 } … … 367 367 } 368 368 if(spcpresent){ 369 constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,Ny,timesy,values, DiagnosticHorizAnalysisEnum));369 constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,Ny,timesy,values,StressbalanceAnalysisEnum)); 370 370 count++; 371 371 } … … 373 373 } 374 374 else if (vertices_type[i]==SIAApproximationEnum){ 375 constraints->AddObject(new SpcDynamic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2, DiagnosticHorizAnalysisEnum));375 constraints->AddObject(new SpcDynamic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,StressbalanceAnalysisEnum)); 376 376 count++; 377 377 } … … 379 379 if (reCast<int,IssmDouble>(vertices_type[i])==FSApproximationEnum || (reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum)){ 380 380 if (Mz==iomodel->numberofvertices && !xIsNan<IssmDouble>(spcvz[i])){ 381 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvz[i], DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy381 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvz[i],StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy 382 382 count++; 383 383 } … … 391 391 } 392 392 if(spcpresent){ 393 constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,Nz,timesz,values, DiagnosticHorizAnalysisEnum));393 constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,Nz,timesz,values,StressbalanceAnalysisEnum)); 394 394 count++; 395 395 } … … 399 399 } 400 400 if (reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum){ 401 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,1,g*rho_ice*(surface[i]-z[i])/FSreconditioning, DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy401 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,1,g*rho_ice*(surface[i]-z[i])/FSreconditioning,StressbalanceAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy 402 402 count++; 403 403 } … … 408 408 switch(reCast<int,IssmDouble>(vertices_type[i])){ 409 409 case SSAFSApproximationEnum: 410 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,0., DiagnosticHorizAnalysisEnum));410 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,0.,StressbalanceAnalysisEnum)); 411 411 count++; 412 412 break; 413 413 case HOFSApproximationEnum: 414 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,0., DiagnosticHorizAnalysisEnum));414 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,5,0.,StressbalanceAnalysisEnum)); 415 415 count++; 416 416 break; 417 417 case FSApproximationEnum: 418 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0., DiagnosticHorizAnalysisEnum));418 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,0.,StressbalanceAnalysisEnum)); 419 419 count++; 420 420 break; … … 426 426 427 427 /*Free data: */ 428 iomodel->DeleteData(spcvx, DiagnosticSpcvxEnum);429 iomodel->DeleteData(spcvy, DiagnosticSpcvyEnum);430 iomodel->DeleteData(spcvz, DiagnosticSpcvzEnum);428 iomodel->DeleteData(spcvx,StressbalanceSpcvxEnum); 429 iomodel->DeleteData(spcvy,StressbalanceSpcvyEnum); 430 iomodel->DeleteData(spcvz,StressbalanceSpcvzEnum); 431 431 iomodel->DeleteData(nodeonSSA,FlowequationBorderSSAEnum); 432 432 if(iomodel->dim==3)iomodel->DeleteData(nodeonHO,FlowequationBorderHOEnum); -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/CreateLoadsStressbalance.cpp
r15769 r15771 1 /*! \file CreateLoads DiagnosticHoriz.c:1 /*! \file CreateLoadsStressbalance.c: 2 2 */ 3 3 … … 7 7 #include "../ModelProcessorx.h" 8 8 9 void CreateLoads DiagnosticHoriz(Loads** ploads, IoModel* iomodel){9 void CreateLoadsStressbalance(Loads** ploads, IoModel* iomodel){ 10 10 11 11 /*DataSets*/ … … 47 47 48 48 /*Create Penpair for penalties: */ 49 iomodel->FetchData(&penalties,&numpenalties,NULL, DiagnosticVertexPairingEnum);49 iomodel->FetchData(&penalties,&numpenalties,NULL,StressbalanceVertexPairingEnum); 50 50 51 51 for(i=0;i<numpenalties;i++){ … … 61 61 62 62 /*Create Load*/ 63 loads->AddObject(new Penpair(iomodel->loadcounter+count+1,&penpair_ids[0], DiagnosticHorizAnalysisEnum));63 loads->AddObject(new Penpair(iomodel->loadcounter+count+1,&penpair_ids[0],StressbalanceAnalysisEnum)); 64 64 count++; 65 65 } … … 67 67 68 68 /*free ressources: */ 69 iomodel->DeleteData(penalties, DiagnosticVertexPairingEnum);69 iomodel->DeleteData(penalties,StressbalanceVertexPairingEnum); 70 70 71 71 /*Create Riffront loads for rifts: */ … … 76 76 for(i=0;i<numriftsegments;i++){ 77 77 if(iomodel->my_elements[reCast<int,IssmDouble>(*(riftinfo+RIFTINFOSIZE*i+2))-1]){ 78 loads->AddObject(new Riftfront(iomodel->loadcounter+count+1,i,iomodel, DiagnosticHorizAnalysisEnum));78 loads->AddObject(new Riftfront(iomodel->loadcounter+count+1,i,iomodel,StressbalanceAnalysisEnum)); 79 79 count++; 80 80 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/CreateNodesStressbalance.cpp
r15769 r15771 1 1 /* 2 * CreateNodes DiagnosticHoriz.c:2 * CreateNodesStressbalance.c: 3 3 */ 4 4 … … 9 9 #include "../ModelProcessorx.h" 10 10 11 void CreateNodes DiagnosticHoriz(Nodes** pnodes, IoModel* iomodel){11 void CreateNodesStressbalance(Nodes** pnodes, IoModel* iomodel){ 12 12 13 13 /*Intermediary*/ … … 75 75 } 76 76 iomodel->FetchData(8,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,FlowequationBorderSSAEnum,FlowequationBorderFSEnum, 77 MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum, DiagnosticReferentialEnum);78 CreateNodes(pnodes,iomodel, DiagnosticHorizAnalysisEnum,finiteelement,approximation);77 MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,StressbalanceReferentialEnum); 78 CreateNodes(pnodes,iomodel,StressbalanceAnalysisEnum,finiteelement,approximation); 79 79 iomodel->DeleteData(8,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,FlowequationBorderSSAEnum,FlowequationBorderFSEnum, 80 MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum, DiagnosticReferentialEnum);80 MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,StressbalanceReferentialEnum); 81 81 } 82 82 else{ … … 89 89 90 90 iomodel->FetchData(8,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,FlowequationBorderSSAEnum,FlowequationBorderFSEnum, 91 MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum, DiagnosticReferentialEnum);91 MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,StressbalanceReferentialEnum); 92 92 if(isFS){ 93 93 /*P1+ velocity*/ … … 96 96 approximation=reCast<int>(iomodel->Data(FlowequationVertexEquationEnum)[i]); 97 97 if(approximation==FSApproximationEnum) approximation=FSvelocityEnum; 98 nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,i,iomodel, DiagnosticHorizAnalysisEnum,approximation));98 nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,i,iomodel,StressbalanceAnalysisEnum,approximation)); 99 99 } 100 100 } 101 101 for(int i=0;i<iomodel->numberofelements;i++){ 102 102 if(iomodel->my_elements[i]){ 103 node = new Node(iomodel->nodecounter+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,0,iomodel, DiagnosticHorizAnalysisEnum,FSvelocityEnum);103 node = new Node(iomodel->nodecounter+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,0,iomodel,StressbalanceAnalysisEnum,FSvelocityEnum); 104 104 node->Deactivate(); 105 105 nodes->AddObject(node); … … 110 110 if(iomodel->my_vertices[i]){ 111 111 approximation=reCast<int>(iomodel->Data(FlowequationVertexEquationEnum)[i]); 112 node = new Node(iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,i,iomodel, DiagnosticHorizAnalysisEnum,FSpressureEnum);112 node = new Node(iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofelements+i+1,iomodel->numberofvertices+iomodel->numberofelements+i,i,iomodel,StressbalanceAnalysisEnum,FSpressureEnum); 113 113 if(approximation==HOApproximationEnum || approximation==SSAApproximationEnum){ 114 114 node->Deactivate(); … … 121 121 for(int i=0;i<iomodel->numberofvertices;i++){ 122 122 if(iomodel->my_vertices[i]){ 123 nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,i,iomodel, DiagnosticHorizAnalysisEnum,reCast<int>(iomodel->Data(FlowequationVertexEquationEnum)[i])));123 nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,i,iomodel,StressbalanceAnalysisEnum,reCast<int>(iomodel->Data(FlowequationVertexEquationEnum)[i]))); 124 124 } 125 125 } 126 126 } 127 127 iomodel->DeleteData(8,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,FlowequationBorderSSAEnum,FlowequationBorderFSEnum, 128 MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum, DiagnosticReferentialEnum);128 MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,StressbalanceReferentialEnum); 129 129 130 130 /*Assign output pointer: */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/UpdateElementsStressbalance.cpp
r15769 r15771 1 1 /* 2 * UpdateElements DiagnosticHoriz:2 * UpdateElementsStressbalance: 3 3 */ 4 4 #ifdef HAVE_CONFIG_H … … 14 14 #include "../ModelProcessorx.h" 15 15 16 void UpdateElements DiagnosticHoriz(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){16 void UpdateElementsStressbalance(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){ 17 17 18 18 int materials_type,finiteelement,temp; -
issm/trunk-jpl/src/c/modules/ModelProcessorx/StressbalanceSIA/CreateConstraintsStressbalanceSIA.cpp
r15769 r15771 1 1 /* 2 * CreateConstraints DiagnosticSIA.c:2 * CreateConstraintsStressbalanceSIA.c: 3 3 */ 4 4 … … 8 8 #include "../ModelProcessorx.h" 9 9 10 void CreateConstraints DiagnosticSIA(Constraints** pconstraints, IoModel* iomodel){10 void CreateConstraintsStressbalanceSIA(Constraints** pconstraints, IoModel* iomodel){ 11 11 12 12 /*Intermediary*/ … … 30 30 31 31 /*Fetch data: */ 32 iomodel->FetchData(3, DiagnosticSpcvxEnum,DiagnosticSpcvyEnum,FlowequationVertexEquationEnum);32 iomodel->FetchData(3,StressbalanceSpcvxEnum,StressbalanceSpcvyEnum,FlowequationVertexEquationEnum); 33 33 34 34 /*Initialize conunter*/ … … 41 41 if (!reCast<int,IssmDouble>(iomodel->Data(FlowequationVertexEquationEnum)[i])==SIAApproximationEnum){ 42 42 43 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0, DiagnosticSIAAnalysisEnum));43 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,StressbalanceSIAAnalysisEnum)); 44 44 count++; 45 45 46 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0, DiagnosticSIAAnalysisEnum));46 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,0,StressbalanceSIAAnalysisEnum)); 47 47 count++; 48 48 } 49 49 else{ 50 if (!xIsNan<IssmDouble>(iomodel->Data( DiagnosticSpcvxEnum)[i])){51 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->Data( DiagnosticSpcvxEnum)[i]/yts,DiagnosticSIAAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.50 if (!xIsNan<IssmDouble>(iomodel->Data(StressbalanceSpcvxEnum)[i])){ 51 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->Data(StressbalanceSpcvxEnum)[i]/yts,StressbalanceSIAAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 52 52 count++; 53 53 } 54 54 55 if (!xIsNan<IssmDouble>(iomodel->Data( DiagnosticSpcvyEnum)[i])){56 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,iomodel->Data( DiagnosticSpcvyEnum)[i]/yts,DiagnosticSIAAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy55 if (!xIsNan<IssmDouble>(iomodel->Data(StressbalanceSpcvyEnum)[i])){ 56 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,iomodel->Data(StressbalanceSpcvyEnum)[i]/yts,StressbalanceSIAAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy 57 57 count++; 58 58 } … … 62 62 63 63 /*Free data: */ 64 iomodel->DeleteData(3, DiagnosticSpcvxEnum,DiagnosticSpcvyEnum,FlowequationVertexEquationEnum);64 iomodel->DeleteData(3,StressbalanceSpcvxEnum,StressbalanceSpcvyEnum,FlowequationVertexEquationEnum); 65 65 66 66 /*Assign output pointer: */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/StressbalanceSIA/CreateLoadsStressbalanceSIA.cpp
r15769 r15771 1 /*! \file CreateLoads DiagnosticSIA.c:1 /*! \file CreateLoadsStressbalanceSIA.c: 2 2 */ 3 3 … … 7 7 #include "../ModelProcessorx.h" 8 8 9 void CreateLoads DiagnosticSIA(Loads** ploads, IoModel* iomodel){9 void CreateLoadsStressbalanceSIA(Loads** ploads, IoModel* iomodel){ 10 10 11 11 /*No loads*/ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/StressbalanceSIA/CreateNodesStressbalanceSIA.cpp
r15769 r15771 1 1 /* 2 * CreateNodes DiagnosticSIA.c:2 * CreateNodesStressbalanceSIA.c: 3 3 */ 4 4 … … 9 9 #include "../ModelProcessorx.h" 10 10 11 void CreateNodes DiagnosticSIA(Nodes** pnodes, IoModel* iomodel){11 void CreateNodesStressbalanceSIA(Nodes** pnodes, IoModel* iomodel){ 12 12 13 13 /*Intermediaries*/ … … 26 26 27 27 iomodel->FetchData(8,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,FlowequationBorderSSAEnum,FlowequationBorderFSEnum, 28 MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum, DiagnosticReferentialEnum);28 MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,StressbalanceReferentialEnum); 29 29 30 30 for(int i=0;i<iomodel->numberofvertices;i++){ … … 32 32 33 33 /*Create new node if is in this processor's partition*/ 34 node = new Node(iomodel->nodecounter+i+1,i,i,iomodel, DiagnosticSIAAnalysisEnum,reCast<int>(iomodel->Data(FlowequationVertexEquationEnum)[i]));34 node = new Node(iomodel->nodecounter+i+1,i,i,iomodel,StressbalanceSIAAnalysisEnum,reCast<int>(iomodel->Data(FlowequationVertexEquationEnum)[i])); 35 35 36 36 /*Deactivate node if not SIA*/ … … 45 45 46 46 iomodel->DeleteData(8,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,FlowequationBorderSSAEnum,FlowequationBorderFSEnum, 47 MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum, DiagnosticReferentialEnum);47 MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,StressbalanceReferentialEnum); 48 48 49 49 /*Assign output pointer: */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/StressbalanceSIA/UpdateElementsStressbalanceSIA.cpp
r15769 r15771 1 1 /* 2 * UpdateElements DiagnosticSIA:2 * UpdateElementsStressbalanceSIA: 3 3 */ 4 4 … … 9 9 #include "../ModelProcessorx.h" 10 10 11 void UpdateElements DiagnosticSIA(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){11 void UpdateElementsStressbalanceSIA(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){ 12 12 13 13 /*Fetch data needed: */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/StressbalanceVertical/CreateConstraintsStressbalanceVertical.cpp
r15769 r15771 1 1 /* 2 * CreateConstraints DiagnosticHoriz.c:2 * CreateConstraintsStressbalanceHoriz.c: 3 3 */ 4 4 … … 8 8 #include "../ModelProcessorx.h" 9 9 10 void CreateConstraints DiagnosticVert(Constraints** pconstraints, IoModel* iomodel){10 void CreateConstraintsStressbalanceVertical(Constraints** pconstraints, IoModel* iomodel){ 11 11 12 12 /*Intermediary*/ … … 24 24 25 25 /*Fetch data: */ 26 iomodel->FetchData(2, DiagnosticSpcvzEnum,FlowequationBorderFSEnum);26 iomodel->FetchData(2,StressbalanceSpcvzEnum,FlowequationBorderFSEnum); 27 27 28 28 /*Initialize counter*/ … … 36 36 37 37 if (reCast<int,IssmDouble>(iomodel->Data(FlowequationBorderFSEnum)[i])){ 38 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0, DiagnosticVertAnalysisEnum)); //spc to zero as vertical velocity is done in Horiz for FS38 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,StressbalanceVerticalAnalysisEnum)); //spc to zero as vertical velocity is done in Horiz for FS 39 39 count++; 40 40 } 41 else if (!xIsNan<IssmDouble>(iomodel->Data( DiagnosticSpcvzEnum)[i])){41 else if (!xIsNan<IssmDouble>(iomodel->Data(StressbalanceSpcvzEnum)[i])){ 42 42 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1, 43 iomodel->Data( DiagnosticSpcvzEnum)[i]/yts,DiagnosticVertAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.43 iomodel->Data(StressbalanceSpcvzEnum)[i]/yts,StressbalanceVerticalAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 44 44 count++; 45 45 … … 49 49 50 50 /*Free data: */ 51 iomodel->DeleteData(2, DiagnosticSpcvzEnum,FlowequationBorderFSEnum);51 iomodel->DeleteData(2,StressbalanceSpcvzEnum,FlowequationBorderFSEnum); 52 52 53 53 /*Assign output pointer: */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/StressbalanceVertical/CreateLoadsStressbalanceVertical.cpp
r15769 r15771 1 /*! \file CreateLoads DiagnosticVert.c:1 /*! \file CreateLoadsStressbalanceVertical.c: 2 2 */ 3 3 … … 7 7 #include "../ModelProcessorx.h" 8 8 9 void CreateLoads DiagnosticVert(Loads** ploads, IoModel* iomodel){9 void CreateLoadsStressbalanceVertical(Loads** ploads, IoModel* iomodel){ 10 10 11 11 /*No loads*/ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/StressbalanceVertical/CreateNodesStressbalanceVertical.cpp
r15769 r15771 1 1 /* 2 * CreateNodes DiagnosticVert.c:2 * CreateNodesStressbalanceVertical.c: 3 3 */ 4 4 … … 9 9 #include "../ModelProcessorx.h" 10 10 11 void CreateNodes DiagnosticVert(Nodes** pnodes, IoModel* iomodel){11 void CreateNodesStressbalanceVertical(Nodes** pnodes, IoModel* iomodel){ 12 12 13 13 /*Now, is the flag macayaealHO on? otherwise, do nothing: */ … … 15 15 16 16 iomodel->FetchData(5,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum); 17 CreateNodes(pnodes,iomodel, DiagnosticVertAnalysisEnum,P1Enum);17 CreateNodes(pnodes,iomodel,StressbalanceVerticalAnalysisEnum,P1Enum); 18 18 iomodel->DeleteData(5,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum); 19 19 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/StressbalanceVertical/UpdateElementsStressbalanceVertical.cpp
r15769 r15771 1 1 /* 2 * UpdateElements DiagnosticVert:2 * UpdateElementsStressbalanceVertical: 3 3 */ 4 4 … … 9 9 #include "../ModelProcessorx.h" 10 10 11 void UpdateElements DiagnosticVert(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){11 void UpdateElementsStressbalanceVertical(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){ 12 12 13 13 /*Now, is the model 3d? otherwise, do nothing: */ -
issm/trunk-jpl/src/c/modules/OutputRiftsx/OutputRiftsx.cpp
r14999 r15771 1 1 /*!\file OutputRiftsx 2 * \brief: output results from diagnosticsolution, for rifts. Notably: fraction of2 * \brief: output results from stressbalance solution, for rifts. Notably: fraction of 3 3 * melange, and penetration. 4 4 */ -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r15767 r15771 41 41 ConstantsYtsEnum, 42 42 DependentObjectEnum, 43 DiagnosticAbstolEnum,44 DiagnosticIcefrontEnum,45 DiagnosticIsnewtonEnum,46 DiagnosticMaxiterEnum,47 DiagnosticNumRequestedOutputsEnum,48 DiagnosticPenaltyFactorEnum,49 DiagnosticReferentialEnum,50 DiagnosticReltolEnum,51 DiagnosticRequestedOutputsEnum,52 DiagnosticRestolEnum,53 DiagnosticRiftPenaltyLockEnum,54 DiagnosticRiftPenaltyThresholdEnum,55 DiagnosticShelfDampeningEnum,56 DiagnosticSpcvxEnum,57 DiagnosticSpcvyEnum,58 DiagnosticSpcvzEnum,59 DiagnosticFSreconditioningEnum,60 DiagnosticVertexPairingEnum,61 DiagnosticViscosityOvershootEnum,43 StressbalanceAbstolEnum, 44 StressbalanceIcefrontEnum, 45 StressbalanceIsnewtonEnum, 46 StressbalanceMaxiterEnum, 47 StressbalanceNumRequestedOutputsEnum, 48 StressbalancePenaltyFactorEnum, 49 StressbalanceReferentialEnum, 50 StressbalanceReltolEnum, 51 StressbalanceRequestedOutputsEnum, 52 StressbalanceRestolEnum, 53 StressbalanceRiftPenaltyLockEnum, 54 StressbalanceRiftPenaltyThresholdEnum, 55 StressbalanceShelfDampeningEnum, 56 StressbalanceSpcvxEnum, 57 StressbalanceSpcvyEnum, 58 StressbalanceSpcvzEnum, 59 StressbalanceFSreconditioningEnum, 60 StressbalanceVertexPairingEnum, 61 StressbalanceViscosityOvershootEnum, 62 62 LoadingforceXEnum, 63 63 LoadingforceYEnum, … … 254 254 TimesteppingTimeAdaptEnum, 255 255 TimesteppingTimeStepEnum, 256 TransientIs diagnosticEnum,256 TransientIsstressbalanceEnum, 257 257 TransientIsgroundinglineEnum, 258 258 TransientIsmasstransportEnum, … … 280 280 BedSlopeXAnalysisEnum, 281 281 BedSlopeYAnalysisEnum, 282 DiagnosticHorizAnalysisEnum,283 DiagnosticSIAAnalysisEnum,284 DiagnosticSolutionEnum,285 DiagnosticVertAnalysisEnum,282 StressbalanceAnalysisEnum, 283 StressbalanceSIAAnalysisEnum, 284 StressbalanceSolutionEnum, 285 StressbalanceVerticalAnalysisEnum, 286 286 EnthalpyAnalysisEnum, 287 287 EnthalpySolutionEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r15767 r15771 49 49 case ConstantsYtsEnum : return "ConstantsYts"; 50 50 case DependentObjectEnum : return "DependentObject"; 51 case DiagnosticAbstolEnum : return "DiagnosticAbstol";52 case DiagnosticIcefrontEnum : return "DiagnosticIcefront";53 case DiagnosticIsnewtonEnum : return "DiagnosticIsnewton";54 case DiagnosticMaxiterEnum : return "DiagnosticMaxiter";55 case DiagnosticNumRequestedOutputsEnum : return "DiagnosticNumRequestedOutputs";56 case DiagnosticPenaltyFactorEnum : return "DiagnosticPenaltyFactor";57 case DiagnosticReferentialEnum : return "DiagnosticReferential";58 case DiagnosticReltolEnum : return "DiagnosticReltol";59 case DiagnosticRequestedOutputsEnum : return "DiagnosticRequestedOutputs";60 case DiagnosticRestolEnum : return "DiagnosticRestol";61 case DiagnosticRiftPenaltyLockEnum : return "DiagnosticRiftPenaltyLock";62 case DiagnosticRiftPenaltyThresholdEnum : return "DiagnosticRiftPenaltyThreshold";63 case DiagnosticShelfDampeningEnum : return "DiagnosticShelfDampening";64 case DiagnosticSpcvxEnum : return "DiagnosticSpcvx";65 case DiagnosticSpcvyEnum : return "DiagnosticSpcvy";66 case DiagnosticSpcvzEnum : return "DiagnosticSpcvz";67 case DiagnosticFSreconditioningEnum : return "DiagnosticFSreconditioning";68 case DiagnosticVertexPairingEnum : return "DiagnosticVertexPairing";69 case DiagnosticViscosityOvershootEnum : return "DiagnosticViscosityOvershoot";51 case StressbalanceAbstolEnum : return "StressbalanceAbstol"; 52 case StressbalanceIcefrontEnum : return "StressbalanceIcefront"; 53 case StressbalanceIsnewtonEnum : return "StressbalanceIsnewton"; 54 case StressbalanceMaxiterEnum : return "StressbalanceMaxiter"; 55 case StressbalanceNumRequestedOutputsEnum : return "StressbalanceNumRequestedOutputs"; 56 case StressbalancePenaltyFactorEnum : return "StressbalancePenaltyFactor"; 57 case StressbalanceReferentialEnum : return "StressbalanceReferential"; 58 case StressbalanceReltolEnum : return "StressbalanceReltol"; 59 case StressbalanceRequestedOutputsEnum : return "StressbalanceRequestedOutputs"; 60 case StressbalanceRestolEnum : return "StressbalanceRestol"; 61 case StressbalanceRiftPenaltyLockEnum : return "StressbalanceRiftPenaltyLock"; 62 case StressbalanceRiftPenaltyThresholdEnum : return "StressbalanceRiftPenaltyThreshold"; 63 case StressbalanceShelfDampeningEnum : return "StressbalanceShelfDampening"; 64 case StressbalanceSpcvxEnum : return "StressbalanceSpcvx"; 65 case StressbalanceSpcvyEnum : return "StressbalanceSpcvy"; 66 case StressbalanceSpcvzEnum : return "StressbalanceSpcvz"; 67 case StressbalanceFSreconditioningEnum : return "StressbalanceFSreconditioning"; 68 case StressbalanceVertexPairingEnum : return "StressbalanceVertexPairing"; 69 case StressbalanceViscosityOvershootEnum : return "StressbalanceViscosityOvershoot"; 70 70 case LoadingforceXEnum : return "LoadingforceX"; 71 71 case LoadingforceYEnum : return "LoadingforceY"; … … 262 262 case TimesteppingTimeAdaptEnum : return "TimesteppingTimeAdapt"; 263 263 case TimesteppingTimeStepEnum : return "TimesteppingTimeStep"; 264 case TransientIs diagnosticEnum : return "TransientIsdiagnostic";264 case TransientIsstressbalanceEnum : return "TransientIsstressbalance"; 265 265 case TransientIsgroundinglineEnum : return "TransientIsgroundingline"; 266 266 case TransientIsmasstransportEnum : return "TransientIsmasstransport"; … … 286 286 case BedSlopeXAnalysisEnum : return "BedSlopeXAnalysis"; 287 287 case BedSlopeYAnalysisEnum : return "BedSlopeYAnalysis"; 288 case DiagnosticHorizAnalysisEnum : return "DiagnosticHorizAnalysis";289 case DiagnosticSIAAnalysisEnum : return "DiagnosticSIAAnalysis";290 case DiagnosticSolutionEnum : return "DiagnosticSolution";291 case DiagnosticVertAnalysisEnum : return "DiagnosticVertAnalysis";288 case StressbalanceAnalysisEnum : return "StressbalanceAnalysis"; 289 case StressbalanceSIAAnalysisEnum : return "StressbalanceSIAAnalysis"; 290 case StressbalanceSolutionEnum : return "StressbalanceSolution"; 291 case StressbalanceVerticalAnalysisEnum : return "StressbalanceVerticalAnalysis"; 292 292 case EnthalpyAnalysisEnum : return "EnthalpyAnalysis"; 293 293 case EnthalpySolutionEnum : return "EnthalpySolution"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r15767 r15771 49 49 else if (strcmp(name,"ConstantsYts")==0) return ConstantsYtsEnum; 50 50 else if (strcmp(name,"DependentObject")==0) return DependentObjectEnum; 51 else if (strcmp(name," DiagnosticAbstol")==0) return DiagnosticAbstolEnum;52 else if (strcmp(name," DiagnosticIcefront")==0) return DiagnosticIcefrontEnum;53 else if (strcmp(name," DiagnosticIsnewton")==0) return DiagnosticIsnewtonEnum;54 else if (strcmp(name," DiagnosticMaxiter")==0) return DiagnosticMaxiterEnum;55 else if (strcmp(name," DiagnosticNumRequestedOutputs")==0) return DiagnosticNumRequestedOutputsEnum;56 else if (strcmp(name," DiagnosticPenaltyFactor")==0) return DiagnosticPenaltyFactorEnum;57 else if (strcmp(name," DiagnosticReferential")==0) return DiagnosticReferentialEnum;58 else if (strcmp(name," DiagnosticReltol")==0) return DiagnosticReltolEnum;59 else if (strcmp(name," DiagnosticRequestedOutputs")==0) return DiagnosticRequestedOutputsEnum;60 else if (strcmp(name," DiagnosticRestol")==0) return DiagnosticRestolEnum;61 else if (strcmp(name," DiagnosticRiftPenaltyLock")==0) return DiagnosticRiftPenaltyLockEnum;62 else if (strcmp(name," DiagnosticRiftPenaltyThreshold")==0) return DiagnosticRiftPenaltyThresholdEnum;63 else if (strcmp(name," DiagnosticShelfDampening")==0) return DiagnosticShelfDampeningEnum;64 else if (strcmp(name," DiagnosticSpcvx")==0) return DiagnosticSpcvxEnum;65 else if (strcmp(name," DiagnosticSpcvy")==0) return DiagnosticSpcvyEnum;66 else if (strcmp(name," DiagnosticSpcvz")==0) return DiagnosticSpcvzEnum;67 else if (strcmp(name," DiagnosticFSreconditioning")==0) return DiagnosticFSreconditioningEnum;68 else if (strcmp(name," DiagnosticVertexPairing")==0) return DiagnosticVertexPairingEnum;69 else if (strcmp(name," DiagnosticViscosityOvershoot")==0) return DiagnosticViscosityOvershootEnum;51 else if (strcmp(name,"StressbalanceAbstol")==0) return StressbalanceAbstolEnum; 52 else if (strcmp(name,"StressbalanceIcefront")==0) return StressbalanceIcefrontEnum; 53 else if (strcmp(name,"StressbalanceIsnewton")==0) return StressbalanceIsnewtonEnum; 54 else if (strcmp(name,"StressbalanceMaxiter")==0) return StressbalanceMaxiterEnum; 55 else if (strcmp(name,"StressbalanceNumRequestedOutputs")==0) return StressbalanceNumRequestedOutputsEnum; 56 else if (strcmp(name,"StressbalancePenaltyFactor")==0) return StressbalancePenaltyFactorEnum; 57 else if (strcmp(name,"StressbalanceReferential")==0) return StressbalanceReferentialEnum; 58 else if (strcmp(name,"StressbalanceReltol")==0) return StressbalanceReltolEnum; 59 else if (strcmp(name,"StressbalanceRequestedOutputs")==0) return StressbalanceRequestedOutputsEnum; 60 else if (strcmp(name,"StressbalanceRestol")==0) return StressbalanceRestolEnum; 61 else if (strcmp(name,"StressbalanceRiftPenaltyLock")==0) return StressbalanceRiftPenaltyLockEnum; 62 else if (strcmp(name,"StressbalanceRiftPenaltyThreshold")==0) return StressbalanceRiftPenaltyThresholdEnum; 63 else if (strcmp(name,"StressbalanceShelfDampening")==0) return StressbalanceShelfDampeningEnum; 64 else if (strcmp(name,"StressbalanceSpcvx")==0) return StressbalanceSpcvxEnum; 65 else if (strcmp(name,"StressbalanceSpcvy")==0) return StressbalanceSpcvyEnum; 66 else if (strcmp(name,"StressbalanceSpcvz")==0) return StressbalanceSpcvzEnum; 67 else if (strcmp(name,"StressbalanceFSreconditioning")==0) return StressbalanceFSreconditioningEnum; 68 else if (strcmp(name,"StressbalanceVertexPairing")==0) return StressbalanceVertexPairingEnum; 69 else if (strcmp(name,"StressbalanceViscosityOvershoot")==0) return StressbalanceViscosityOvershootEnum; 70 70 else if (strcmp(name,"LoadingforceX")==0) return LoadingforceXEnum; 71 71 else if (strcmp(name,"LoadingforceY")==0) return LoadingforceYEnum; … … 268 268 else if (strcmp(name,"TimesteppingTimeAdapt")==0) return TimesteppingTimeAdaptEnum; 269 269 else if (strcmp(name,"TimesteppingTimeStep")==0) return TimesteppingTimeStepEnum; 270 else if (strcmp(name,"TransientIs diagnostic")==0) return TransientIsdiagnosticEnum;270 else if (strcmp(name,"TransientIsstressbalance")==0) return TransientIsstressbalanceEnum; 271 271 else if (strcmp(name,"TransientIsgroundingline")==0) return TransientIsgroundinglineEnum; 272 272 else if (strcmp(name,"TransientIsmasstransport")==0) return TransientIsmasstransportEnum; … … 292 292 else if (strcmp(name,"BedSlopeXAnalysis")==0) return BedSlopeXAnalysisEnum; 293 293 else if (strcmp(name,"BedSlopeYAnalysis")==0) return BedSlopeYAnalysisEnum; 294 else if (strcmp(name," DiagnosticHorizAnalysis")==0) return DiagnosticHorizAnalysisEnum;295 else if (strcmp(name," DiagnosticSIAAnalysis")==0) return DiagnosticSIAAnalysisEnum;296 else if (strcmp(name," DiagnosticSolution")==0) return DiagnosticSolutionEnum;297 else if (strcmp(name," DiagnosticVertAnalysis")==0) return DiagnosticVertAnalysisEnum;294 else if (strcmp(name,"StressbalanceAnalysis")==0) return StressbalanceAnalysisEnum; 295 else if (strcmp(name,"StressbalanceSIAAnalysis")==0) return StressbalanceSIAAnalysisEnum; 296 else if (strcmp(name,"StressbalanceSolution")==0) return StressbalanceSolutionEnum; 297 else if (strcmp(name,"StressbalanceVerticalAnalysis")==0) return StressbalanceVerticalAnalysisEnum; 298 298 else if (strcmp(name,"EnthalpyAnalysis")==0) return EnthalpyAnalysisEnum; 299 299 else if (strcmp(name,"EnthalpySolution")==0) return EnthalpySolutionEnum; -
issm/trunk-jpl/src/c/solutionsequences/convergence.cpp
r15104 r15771 40 40 41 41 /*get convergence options*/ 42 parameters->FindParam(&eps_res, DiagnosticRestolEnum);43 parameters->FindParam(&eps_rel, DiagnosticReltolEnum);44 parameters->FindParam(&eps_abs, DiagnosticAbstolEnum);42 parameters->FindParam(&eps_res,StressbalanceRestolEnum); 43 parameters->FindParam(&eps_rel,StressbalanceReltolEnum); 44 parameters->FindParam(&eps_abs,StressbalanceAbstolEnum); 45 45 parameters->FindParam(&yts,ConstantsYtsEnum); 46 46 -
issm/trunk-jpl/src/c/solutionsequences/solutionsequence_newton.cpp
r15453 r15771 33 33 34 34 /*Recover parameters: */ 35 femmodel->parameters->FindParam(&max_nonlinear_iterations, DiagnosticMaxiterEnum);35 femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum); 36 36 femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum); 37 femmodel->parameters->FindParam(&newton, DiagnosticIsnewtonEnum);37 femmodel->parameters->FindParam(&newton,StressbalanceIsnewtonEnum); 38 38 femmodel->UpdateConstraintsx(); 39 39 -
issm/trunk-jpl/src/c/solutionsequences/solutionsequence_nonlinear.cpp
r15197 r15771 33 33 34 34 /*Recover parameters: */ 35 femmodel->parameters->FindParam(&min_mechanical_constraints, DiagnosticRiftPenaltyThresholdEnum);36 femmodel->parameters->FindParam(&max_nonlinear_iterations, DiagnosticMaxiterEnum);35 femmodel->parameters->FindParam(&min_mechanical_constraints,StressbalanceRiftPenaltyThresholdEnum); 36 femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum); 37 37 femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum); 38 38 femmodel->UpdateConstraintsx(); -
issm/trunk-jpl/src/c/solutionsequences/solutionsequence_stokescoupling_nonlinear.cpp
r15564 r15771 35 35 36 36 /*Recover parameters: */ 37 femmodel->parameters->FindParam(&min_mechanical_constraints, DiagnosticRiftPenaltyThresholdEnum);38 femmodel->parameters->FindParam(&max_nonlinear_iterations, DiagnosticMaxiterEnum);37 femmodel->parameters->FindParam(&min_mechanical_constraints,StressbalanceRiftPenaltyThresholdEnum); 38 femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum); 39 39 femmodel->UpdateConstraintsx(); 40 40 … … 43 43 44 44 /*First get ug_horiz:*/ 45 femmodel->SetCurrentConfiguration( DiagnosticHorizAnalysisEnum);45 femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum); 46 46 GetSolutionFromInputsx(&ug_horiz, femmodel->elements, femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters); 47 47 Reducevectorgtofx(&uf_horiz, ug_horiz, femmodel->nodes,femmodel->parameters); … … 49 49 for(;;){ 50 50 51 /*First diagnostichoriz:*/52 femmodel->SetCurrentConfiguration( DiagnosticHorizAnalysisEnum);51 /*First stressbalance horiz:*/ 52 femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum); 53 53 femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum); 54 54 … … 71 71 72 72 /*Second compute vertical velocity: */ 73 femmodel->SetCurrentConfiguration( DiagnosticVertAnalysisEnum);73 femmodel->SetCurrentConfiguration(StressbalanceVerticalAnalysisEnum); 74 74 femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum); 75 75 -
issm/trunk-jpl/src/m/boundaryconditions/SetIceSheetBC.m
r15767 r15771 1 1 function md=SetIceSheetBC(md) 2 %SETICESHEETBC - Create the boundary conditions for diagnosticand thermal models for an IceSheet with no Ice Front2 %SETICESHEETBC - Create the boundary conditions for stressbalance and thermal models for an IceSheet with no Ice Front 3 3 % 4 4 % Usage: … … 9 9 %node on Dirichlet 10 10 pos=find(md.mesh.vertexonboundary); 11 md. diagnostic.spcvx=NaN*ones(md.mesh.numberofvertices,1);12 md. diagnostic.spcvy=NaN*ones(md.mesh.numberofvertices,1);13 md. diagnostic.spcvz=NaN*ones(md.mesh.numberofvertices,1);14 md. diagnostic.spcvx(pos)=0;15 md. diagnostic.spcvy(pos)=0;16 md. diagnostic.spcvz(pos)=0;17 md. diagnostic.referential=NaN*ones(md.mesh.numberofvertices,6);18 md. diagnostic.loadingforce=0*ones(md.mesh.numberofvertices,3);11 md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1); 12 md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1); 13 md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1); 14 md.stressbalance.spcvx(pos)=0; 15 md.stressbalance.spcvy(pos)=0; 16 md.stressbalance.spcvz(pos)=0; 17 md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6); 18 md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3); 19 19 20 20 %Dirichlet Values 21 21 if (length(md.inversion.vx_obs)==md.mesh.numberofvertices & length(md.inversion.vy_obs)==md.mesh.numberofvertices) 22 disp(' boundary conditions for diagnosticmodel: spc set as observed velocities');23 md. diagnostic.spcvx(pos)=md.inversion.vx_obs(pos);24 md. diagnostic.spcvy(pos)=md.inversion.vy_obs(pos);22 disp(' boundary conditions for stressbalance model: spc set as observed velocities'); 23 md.stressbalance.spcvx(pos)=md.inversion.vx_obs(pos); 24 md.stressbalance.spcvy(pos)=md.inversion.vy_obs(pos); 25 25 else 26 disp(' boundary conditions for diagnosticmodel: spc set as zero');26 disp(' boundary conditions for stressbalance model: spc set as zero'); 27 27 end 28 28 -
issm/trunk-jpl/src/m/boundaryconditions/SetIceSheetBC.py
r15767 r15771 5 5 def SetIceSheetBC(md): 6 6 """ 7 SETICESHEETBC - Create the boundary conditions for diagnosticand thermal models for an IceSheet with no Ice Front7 SETICESHEETBC - Create the boundary conditions for stressbalance and thermal models for an IceSheet with no Ice Front 8 8 9 9 Usage: … … 15 15 #node on Dirichlet 16 16 pos=numpy.nonzero(md.mesh.vertexonboundary) 17 md. diagnostic.spcvx=float('nan')*numpy.ones((md.mesh.numberofvertices,1))18 md. diagnostic.spcvy=float('nan')*numpy.ones((md.mesh.numberofvertices,1))19 md. diagnostic.spcvz=float('nan')*numpy.ones((md.mesh.numberofvertices,1))20 md. diagnostic.spcvx[pos]=021 md. diagnostic.spcvy[pos]=022 md. diagnostic.spcvz[pos]=023 md. diagnostic.referential=float('nan')*numpy.ones((md.mesh.numberofvertices,6))24 md. diagnostic.loadingforce=0*numpy.ones((md.mesh.numberofvertices,3))17 md.stressbalance.spcvx=float('nan')*numpy.ones((md.mesh.numberofvertices,1)) 18 md.stressbalance.spcvy=float('nan')*numpy.ones((md.mesh.numberofvertices,1)) 19 md.stressbalance.spcvz=float('nan')*numpy.ones((md.mesh.numberofvertices,1)) 20 md.stressbalance.spcvx[pos]=0 21 md.stressbalance.spcvy[pos]=0 22 md.stressbalance.spcvz[pos]=0 23 md.stressbalance.referential=float('nan')*numpy.ones((md.mesh.numberofvertices,6)) 24 md.stressbalance.loadingforce=0*numpy.ones((md.mesh.numberofvertices,3)) 25 25 26 26 #Dirichlet Values 27 27 if isinstance(md.inversion.vx_obs,numpy.ndarray) and numpy.size(md.inversion.vx_obs,axis=0)==md.mesh.numberofvertices and isinstance(md.inversion.vy_obs,numpy.ndarray) and numpy.size(md.inversion.vy_obs,axis=0)==md.mesh.numberofvertices: 28 print " boundary conditions for diagnosticmodel: spc set as observed velocities"29 md. diagnostic.spcvx[pos]=md.inversion.vx_obs[pos]30 md. diagnostic.spcvy[pos]=md.inversion.vy_obs[pos]28 print " boundary conditions for stressbalance model: spc set as observed velocities" 29 md.stressbalance.spcvx[pos]=md.inversion.vx_obs[pos] 30 md.stressbalance.spcvy[pos]=md.inversion.vy_obs[pos] 31 31 else: 32 print " boundary conditions for diagnosticmodel: spc set as zero"32 print " boundary conditions for stressbalance model: spc set as zero" 33 33 34 34 #No ice front -> do nothing -
issm/trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.m
r15767 r15771 1 1 function md=SetIceShelfBC(md,varargin) 2 %SETICESHELFBC - Create the boundary conditions for diagnosticand thermal models for a Ice Shelf with Ice Front2 %SETICESHELFBC - Create the boundary conditions for stressbalance and thermal models for a Ice Shelf with Ice Front 3 3 % 4 4 % Neumann BC are used on the ice front (an ANRGUS contour around the ice front 5 5 % must be given in input) 6 % Dirichlet BC are used elsewhere for diagnostic6 % Dirichlet BC are used elsewhere for stressbalance 7 7 % 8 8 % Usage: … … 28 28 end 29 29 pos=find(md.mesh.vertexonboundary & ~nodeonicefront); 30 md. diagnostic.spcvx=NaN*ones(md.mesh.numberofvertices,1);31 md. diagnostic.spcvy=NaN*ones(md.mesh.numberofvertices,1);32 md. diagnostic.spcvz=NaN*ones(md.mesh.numberofvertices,1);33 md. diagnostic.spcvx(pos)=0;34 md. diagnostic.spcvy(pos)=0;35 md. diagnostic.spcvz(pos)=0;36 md. diagnostic.referential=NaN*ones(md.mesh.numberofvertices,6);37 md. diagnostic.loadingforce=0*ones(md.mesh.numberofvertices,3);30 md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1); 31 md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1); 32 md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1); 33 md.stressbalance.spcvx(pos)=0; 34 md.stressbalance.spcvy(pos)=0; 35 md.stressbalance.spcvz(pos)=0; 36 md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6); 37 md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3); 38 38 39 39 %Dirichlet Values 40 40 if (length(md.inversion.vx_obs)==md.mesh.numberofvertices & length(md.inversion.vy_obs)==md.mesh.numberofvertices) 41 disp(' boundary conditions for diagnosticmodel: spc set as observed velocities');42 md. diagnostic.spcvx(pos)=md.inversion.vx_obs(pos);43 md. diagnostic.spcvy(pos)=md.inversion.vy_obs(pos);41 disp(' boundary conditions for stressbalance model: spc set as observed velocities'); 42 md.stressbalance.spcvx(pos)=md.inversion.vx_obs(pos); 43 md.stressbalance.spcvy(pos)=md.inversion.vy_obs(pos); 44 44 else 45 disp(' boundary conditions for diagnosticmodel: spc set as zero');45 disp(' boundary conditions for stressbalance model: spc set as zero'); 46 46 end 47 47 -
issm/trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.py
r15767 r15771 5 5 def SetIceShelfBC(md,icefrontfile=''): 6 6 """ 7 SETICESHELFBC - Create the boundary conditions for diagnosticand thermal models for a Ice Shelf with Ice Front7 SETICESHELFBC - Create the boundary conditions for stressbalance and thermal models for a Ice Shelf with Ice Front 8 8 9 9 Neumann BC are used on the ice front (an ARGUS contour around the ice front 10 10 must be given in input) 11 Dirichlet BC are used elsewhere for diagnostic11 Dirichlet BC are used elsewhere for stressbalance 12 12 13 13 Usage: … … 32 32 # pos=find(md.mesh.vertexonboundary & ~nodeonicefront); 33 33 pos=numpy.nonzero(numpy.logical_and(md.mesh.vertexonboundary,numpy.logical_not(nodeonicefront)))[0] 34 md. diagnostic.spcvx=float('nan')*numpy.ones((md.mesh.numberofvertices,1))35 md. diagnostic.spcvy=float('nan')*numpy.ones((md.mesh.numberofvertices,1))36 md. diagnostic.spcvz=float('nan')*numpy.ones((md.mesh.numberofvertices,1))37 md. diagnostic.spcvx[pos]=038 md. diagnostic.spcvy[pos]=039 md. diagnostic.spcvz[pos]=040 md. diagnostic.referential=float('nan')*numpy.ones((md.mesh.numberofvertices,6))41 md. diagnostic.loadingforce=0*numpy.ones((md.mesh.numberofvertices,3))34 md.stressbalance.spcvx=float('nan')*numpy.ones((md.mesh.numberofvertices,1)) 35 md.stressbalance.spcvy=float('nan')*numpy.ones((md.mesh.numberofvertices,1)) 36 md.stressbalance.spcvz=float('nan')*numpy.ones((md.mesh.numberofvertices,1)) 37 md.stressbalance.spcvx[pos]=0 38 md.stressbalance.spcvy[pos]=0 39 md.stressbalance.spcvz[pos]=0 40 md.stressbalance.referential=float('nan')*numpy.ones((md.mesh.numberofvertices,6)) 41 md.stressbalance.loadingforce=0*numpy.ones((md.mesh.numberofvertices,3)) 42 42 43 43 #Dirichlet Values … … 48 48 if numpy.ndim(md.inversion.vy_obs)==1: 49 49 md.inversion.vy_obs=md.inversion.vy_obs.reshape(-1,1) 50 print " boundary conditions for diagnosticmodel: spc set as observed velocities"51 md. diagnostic.spcvx[pos]=md.inversion.vx_obs[pos]52 md. diagnostic.spcvy[pos]=md.inversion.vy_obs[pos]50 print " boundary conditions for stressbalance model: spc set as observed velocities" 51 md.stressbalance.spcvx[pos]=md.inversion.vx_obs[pos] 52 md.stressbalance.spcvy[pos]=md.inversion.vy_obs[pos] 53 53 else: 54 print " boundary conditions for diagnosticmodel: spc set as zero"54 print " boundary conditions for stressbalance model: spc set as zero" 55 55 56 56 #Icefront position -
issm/trunk-jpl/src/m/boundaryconditions/SetMarineIceSheetBC.m
r15767 r15771 1 1 function md=SetMarineIceSheetBC(md,varargin) 2 %SETICEMARINESHEETBC - Create the boundary conditions for diagnosticand thermal models for a Marine Ice Sheet with Ice Front2 %SETICEMARINESHEETBC - Create the boundary conditions for stressbalance and thermal models for a Marine Ice Sheet with Ice Front 3 3 % 4 4 % Neumann BC are used on the ice front (an ARGUS contour around the ice front 5 5 % can be given in input, or it will be deduced as onfloatingice & onboundary) 6 % Dirichlet BC are used elsewhere for diagnostic6 % Dirichlet BC are used elsewhere for stressbalance 7 7 % 8 8 % Usage: … … 35 35 warning('SetMarineIceSheetBC warning: ice front all around the glacier, no dirichlet found. Dirichlet must be added manually') 36 36 end 37 md. diagnostic.spcvx=NaN*ones(md.mesh.numberofvertices,1);38 md. diagnostic.spcvy=NaN*ones(md.mesh.numberofvertices,1);39 md. diagnostic.spcvz=NaN*ones(md.mesh.numberofvertices,1);40 md. diagnostic.spcvx(pos)=0;41 md. diagnostic.spcvy(pos)=0;42 md. diagnostic.spcvz(pos)=0;43 md. diagnostic.referential=NaN*ones(md.mesh.numberofvertices,6);44 md. diagnostic.loadingforce=0*ones(md.mesh.numberofvertices,3);37 md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1); 38 md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1); 39 md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1); 40 md.stressbalance.spcvx(pos)=0; 41 md.stressbalance.spcvy(pos)=0; 42 md.stressbalance.spcvz(pos)=0; 43 md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6); 44 md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3); 45 45 46 46 %Dirichlet Values 47 47 if (length(md.inversion.vx_obs)==md.mesh.numberofvertices & length(md.inversion.vy_obs)==md.mesh.numberofvertices) 48 disp(' boundary conditions for diagnosticmodel: spc set as observed velocities');49 md. diagnostic.spcvx(pos)=md.inversion.vx_obs(pos);50 md. diagnostic.spcvy(pos)=md.inversion.vy_obs(pos);48 disp(' boundary conditions for stressbalance model: spc set as observed velocities'); 49 md.stressbalance.spcvx(pos)=md.inversion.vx_obs(pos); 50 md.stressbalance.spcvy(pos)=md.inversion.vy_obs(pos); 51 51 else 52 disp(' boundary conditions for diagnosticmodel: spc set as zero');52 disp(' boundary conditions for stressbalance model: spc set as zero'); 53 53 end 54 54 -
issm/trunk-jpl/src/m/boundaryconditions/SetMarineIceSheetBC.py
r15767 r15771 5 5 def SetMarineIceSheetBC(md,icefrontfile=''): 6 6 """ 7 SETICEMARINESHEETBC - Create the boundary conditions for diagnosticand thermal models for a Marine Ice Sheet with Ice Front7 SETICEMARINESHEETBC - Create the boundary conditions for stressbalance and thermal models for a Marine Ice Sheet with Ice Front 8 8 9 9 Neumann BC are used on the ice front (an ARGUS contour around the ice front 10 10 can be given in input, or it will be deduced as onfloatingice & onboundary) 11 Dirichlet BC are used elsewhere for diagnostic11 Dirichlet BC are used elsewhere for stressbalance 12 12 13 13 Usage: … … 40 40 print "SetMarineIceSheetBC warning: ice front all around the glacier, no dirichlet found. Dirichlet must be added manually." 41 41 42 md. diagnostic.spcvx=float('nan')*numpy.ones((md.mesh.numberofvertices,1))43 md. diagnostic.spcvy=float('nan')*numpy.ones((md.mesh.numberofvertices,1))44 md. diagnostic.spcvz=float('nan')*numpy.ones((md.mesh.numberofvertices,1))45 md. diagnostic.spcvx[pos]=046 md. diagnostic.spcvy[pos]=047 md. diagnostic.spcvz[pos]=048 md. diagnostic.referential=float('nan')*numpy.ones((md.mesh.numberofvertices,6))49 md. diagnostic.loadingforce=0*numpy.ones((md.mesh.numberofvertices,3))42 md.stressbalance.spcvx=float('nan')*numpy.ones((md.mesh.numberofvertices,1)) 43 md.stressbalance.spcvy=float('nan')*numpy.ones((md.mesh.numberofvertices,1)) 44 md.stressbalance.spcvz=float('nan')*numpy.ones((md.mesh.numberofvertices,1)) 45 md.stressbalance.spcvx[pos]=0 46 md.stressbalance.spcvy[pos]=0 47 md.stressbalance.spcvz[pos]=0 48 md.stressbalance.referential=float('nan')*numpy.ones((md.mesh.numberofvertices,6)) 49 md.stressbalance.loadingforce=0*numpy.ones((md.mesh.numberofvertices,3)) 50 50 51 51 #Dirichlet Values 52 52 if isinstance(md.inversion.vx_obs,numpy.ndarray) and numpy.size(md.inversion.vx_obs,axis=0)==md.mesh.numberofvertices and isinstance(md.inversion.vy_obs,numpy.ndarray) and numpy.size(md.inversion.vy_obs,axis=0)==md.mesh.numberofvertices: 53 print " boundary conditions for diagnosticmodel: spc set as observed velocities"54 md. diagnostic.spcvx[pos]=md.inversion.vx_obs[pos]55 md. diagnostic.spcvy[pos]=md.inversion.vy_obs[pos]53 print " boundary conditions for stressbalance model: spc set as observed velocities" 54 md.stressbalance.spcvx[pos]=md.inversion.vx_obs[pos] 55 md.stressbalance.spcvy[pos]=md.inversion.vy_obs[pos] 56 56 else: 57 print " boundary conditions for diagnosticmodel: spc set as zero"57 print " boundary conditions for stressbalance model: spc set as zero" 58 58 59 59 md.hydrology.spcwatercolumn=numpy.zeros((md.mesh.numberofvertices,2)) -
issm/trunk-jpl/src/m/classes/flowequation.m
r15694 r15771 74 74 function md = checkconsistency(obj,md,solution,analyses) % {{{ 75 75 76 if ismember( DiagnosticHorizAnalysisEnum(),analyses),76 if ismember(StressbalanceAnalysisEnum(),analyses), 77 77 78 78 md = checkfield(md,'flowequation.isSIA','numel',[1],'values',[0 1]); … … 98 98 end 99 99 end 100 if ismember( DiagnosticSIAAnalysisEnum(),analyses),100 if ismember(StressbalanceSIAAnalysisEnum(),analyses), 101 101 if any(obj.element_equation==1), 102 102 if(obj.element_equation & md.mask.elementonfloatingice), -
issm/trunk-jpl/src/m/classes/flowequation.py
r15689 r15771 61 61 def checkconsistency(self,md,solution,analyses): # {{{ 62 62 63 if DiagnosticHorizAnalysisEnum() in analyses:63 if StressbalanceAnalysisEnum() in analyses: 64 64 md = checkfield(md,'flowequation.isSIA','numel',[1],'values',[0,1]) 65 65 md = checkfield(md,'flowequation.isSSA','numel',[1],'values',[0,1]) … … 82 82 md.checkmessage("no element types set for this model") 83 83 84 if DiagnosticSIAAnalysisEnum() in analyses:84 if StressbalanceSIAAnalysisEnum() in analyses: 85 85 if any(self.element_equation==1): 86 86 if numpy.any(numpy.logical_and(self.element_equation,md.mask.elementonfloatingice)): -
issm/trunk-jpl/src/m/classes/friction.m
r15131 r15771 25 25 26 26 %Early return 27 if ~ismember( DiagnosticHorizAnalysisEnum(),analyses) & ~ismember(ThermalAnalysisEnum(),analyses), return; end27 if ~ismember(StressbalanceAnalysisEnum(),analyses) & ~ismember(ThermalAnalysisEnum(),analyses), return; end 28 28 29 29 md = checkfield(md,'friction.coefficient','NaN',1,'size',[md.mesh.numberofvertices 1]); -
issm/trunk-jpl/src/m/classes/friction.py
r15131 r15771 35 35 36 36 #Early return 37 if DiagnosticHorizAnalysisEnum() not in analyses and ThermalAnalysisEnum() not in analyses:37 if StressbalanceAnalysisEnum() not in analyses and ThermalAnalysisEnum() not in analyses: 38 38 return md 39 39 -
issm/trunk-jpl/src/m/classes/initialization.m
r15767 r15771 30 30 end % }}} 31 31 function md = checkconsistency(obj,md,solution,analyses) % {{{ 32 if ismember( DiagnosticHorizAnalysisEnum(),analyses)32 if ismember(StressbalanceAnalysisEnum(),analyses) 33 33 if ~(isnan(md.initialization.vx) | isnan(md.initialization.vy)), 34 34 md = checkfield(md,'initialization.vx','NaN',1,'size',[md.mesh.numberofvertices 1]); -
issm/trunk-jpl/src/m/classes/initialization.py
r15767 r15771 48 48 #}}} 49 49 def checkconsistency(self,md,solution,analyses): # {{{ 50 if DiagnosticHorizAnalysisEnum() in analyses:50 if StressbalanceAnalysisEnum() in analyses: 51 51 if not numpy.any(numpy.logical_or(numpy.isnan(md.initialization.vx),numpy.isnan(md.initialization.vy))): 52 52 md = checkfield(md,'initialization.vx','NaN',1,'size',[md.mesh.numberofvertices]) -
issm/trunk-jpl/src/m/classes/model/model.m
r15768 r15771 29 29 30 30 balancethickness = 0; 31 diagnostic= 0;31 stressbalance = 0; 32 32 groundingline = 0; 33 33 hydrology = 0; … … 84 84 end 85 85 %2013 April 12 86 if numel(md. diagnostic.loadingforce==1)87 md. diagnostic.loadingforce=0*ones(md.mesh.numberofvertices,3);86 if numel(md.stressbalance.loadingforce==1) 87 md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3); 88 88 end 89 89 %2013 April 17 … … 91 91 disp('Recovering old hydrology class'); 92 92 md.hydrology=hydrologyshreve(md.materials); 93 end94 %2013 July 25th95 if isa(md.diagnostic,'diagnostic'),96 disp('Recovering old stressbalance class');97 icefront = md.diagnostic.icefront;98 md.diagnostic=stressbalance(md.diagnostic);99 md.mask.icelevelset=ones(md.mesh.numberofvertices,1);100 md.mask.icelevelset(icefront(:,1:end-2))=0;101 93 end 102 94 end% }}} … … 184 176 185 177 %boundary conditions 186 md. diagnostic.spcvx=project2d(md,md.diagnostic.spcvx,md.mesh.numberoflayers);187 md. diagnostic.spcvy=project2d(md,md.diagnostic.spcvy,md.mesh.numberoflayers);188 md. diagnostic.spcvz=project2d(md,md.diagnostic.spcvz,md.mesh.numberoflayers);189 md. diagnostic.referential=project2d(md,md.diagnostic.referential,md.mesh.numberoflayers);190 md. diagnostic.loadingforce=project2d(md,md.diagnostic.loadingforce,md.mesh.numberoflayers);178 md.stressbalance.spcvx=project2d(md,md.stressbalance.spcvx,md.mesh.numberoflayers); 179 md.stressbalance.spcvy=project2d(md,md.stressbalance.spcvy,md.mesh.numberoflayers); 180 md.stressbalance.spcvz=project2d(md,md.stressbalance.spcvz,md.mesh.numberoflayers); 181 md.stressbalance.referential=project2d(md,md.stressbalance.referential,md.mesh.numberoflayers); 182 md.stressbalance.loadingforce=project2d(md,md.stressbalance.loadingforce,md.mesh.numberoflayers); 191 183 md.masstransport.spcthickness=project2d(md,md.masstransport.spcthickness,md.mesh.numberoflayers); 192 184 md.thermal.spctemperature=project2d(md,md.thermal.spctemperature,md.mesh.numberoflayers); … … 442 434 443 435 %Penalties 444 if ~isnan(md2. diagnostic.vertex_pairing),445 for i=1:size(md1. diagnostic.vertex_pairing,1);446 md2. diagnostic.vertex_pairing(i,:)=Pnode(md1.diagnostic.vertex_pairing(i,:));436 if ~isnan(md2.stressbalance.vertex_pairing), 437 for i=1:size(md1.stressbalance.vertex_pairing,1); 438 md2.stressbalance.vertex_pairing(i,:)=Pnode(md1.stressbalance.vertex_pairing(i,:)); 447 439 end 448 md2. diagnostic.vertex_pairing=md2.diagnostic.vertex_pairing(find(md2.diagnostic.vertex_pairing(:,1)),:);440 md2.stressbalance.vertex_pairing=md2.stressbalance.vertex_pairing(find(md2.stressbalance.vertex_pairing(:,1)),:); 449 441 end 450 442 if ~isnan(md2.masstransport.vertex_pairing), … … 480 472 nodestoflag1=intersect(orphans_node,pos_node); 481 473 nodestoflag2=Pnode(nodestoflag1); 482 if numel(md1. diagnostic.spcvx)>1 & numel(md1.diagnostic.spcvy)>2 & numel(md1.diagnostic.spcvz)>2,474 if numel(md1.stressbalance.spcvx)>1 & numel(md1.stressbalance.spcvy)>2 & numel(md1.stressbalance.spcvz)>2, 483 475 if numel(md1.inversion.vx_obs)>1 & numel(md1.inversion.vy_obs)>1 484 md2. diagnostic.spcvx(nodestoflag2)=md2.inversion.vx_obs(nodestoflag2);485 md2. diagnostic.spcvy(nodestoflag2)=md2.inversion.vy_obs(nodestoflag2);476 md2.stressbalance.spcvx(nodestoflag2)=md2.inversion.vx_obs(nodestoflag2); 477 md2.stressbalance.spcvy(nodestoflag2)=md2.inversion.vy_obs(nodestoflag2); 486 478 else 487 md2. diagnostic.spcvx(nodestoflag2)=NaN;488 md2. diagnostic.spcvy(nodestoflag2)=NaN;479 md2.stressbalance.spcvx(nodestoflag2)=NaN; 480 md2.stressbalance.spcvy(nodestoflag2)=NaN; 489 481 disp(' ') 490 482 disp('!! extract warning: spc values should be checked !!') … … 492 484 end 493 485 %put 0 for vz 494 md2. diagnostic.spcvz(nodestoflag2)=0;486 md2.stressbalance.spcvz(nodestoflag2)=0; 495 487 end 496 488 if ~isnan(md1.thermal.spctemperature), … … 711 703 712 704 %boundary conditions 713 md. diagnostic.spcvx=project3d(md,'vector',md.diagnostic.spcvx,'type','node');714 md. diagnostic.spcvy=project3d(md,'vector',md.diagnostic.spcvy,'type','node');715 md. diagnostic.spcvz=project3d(md,'vector',md.diagnostic.spcvz,'type','node');705 md.stressbalance.spcvx=project3d(md,'vector',md.stressbalance.spcvx,'type','node'); 706 md.stressbalance.spcvy=project3d(md,'vector',md.stressbalance.spcvy,'type','node'); 707 md.stressbalance.spcvz=project3d(md,'vector',md.stressbalance.spcvz,'type','node'); 716 708 md.thermal.spctemperature=project3d(md,'vector',md.thermal.spctemperature,'type','node','layer',md.mesh.numberoflayers,'padding',NaN); 717 709 md.masstransport.spcthickness=project3d(md,'vector',md.masstransport.spcthickness,'type','node'); 718 710 md.balancethickness.spcthickness=project3d(md,'vector',md.balancethickness.spcthickness,'type','node'); 719 md. diagnostic.referential=project3d(md,'vector',md.diagnostic.referential,'type','node');720 md. diagnostic.loadingforce=project3d(md,'vector',md.diagnostic.loadingforce,'type','node');711 md.stressbalance.referential=project3d(md,'vector',md.stressbalance.referential,'type','node'); 712 md.stressbalance.loadingforce=project3d(md,'vector',md.stressbalance.loadingforce,'type','node'); 721 713 722 714 %connectivity … … 864 856 if isfield(structmd,'eps_rel'), md.steadystate.reltol=structmd.eps_rel; end 865 857 if isfield(structmd,'max_steadystate_iterations'), md.steadystate.maxiter=structmd.max_steadystate_iterations; end 866 if isfield(structmd,'isdiagnostic'), md.transient.is diagnostic=structmd.isdiagnostic; end858 if isfield(structmd,'isdiagnostic'), md.transient.isstressbalance=structmd.isdiagnostic; end 867 859 if isfield(structmd,'isprognostic'), md.transient.ismasstransport=structmd.isprognostic; end 868 860 if isfield(structmd,'isthermal'), md.transient.isthermal=structmd.isthermal; end … … 929 921 if isfield(structmd,'z'), md.mesh.z=structmd.z; end 930 922 if isfield(structmd,'mask'), md.flaim.criterion=structmd.mask; end 931 if isfield(structmd,'pressureload'), md.diagnostic.icefront=structmd.pressureload; end 932 if isfield(structmd,'diagnostic_ref'), md.diagnostic.referential=structmd.diagnostic_ref; end 923 if isfield(structmd,'diagnostic_ref'), md.stressbalance.referential=structmd.diagnostic_ref; end 933 924 if isfield(structmd,'npart'); md.qmu.numberofpartitions=structmd.npart; end 934 925 if isfield(structmd,'part'); md.qmu.partition=structmd.part; end … … 944 935 945 936 if isfield(structmd,'spcvelocity'), 946 md. diagnostic.spcvx=NaN*ones(md.mesh.numberofvertices,1);947 md. diagnostic.spcvy=NaN*ones(md.mesh.numberofvertices,1);948 md. diagnostic.spcvz=NaN*ones(md.mesh.numberofvertices,1);949 pos=find(structmd.spcvelocity(:,1)); md. diagnostic.spcvx(pos)=structmd.spcvelocity(pos,4);950 pos=find(structmd.spcvelocity(:,2)); md. diagnostic.spcvy(pos)=structmd.spcvelocity(pos,5);951 pos=find(structmd.spcvelocity(:,3)); md. diagnostic.spcvz(pos)=structmd.spcvelocity(pos,6);937 md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1); 938 md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1); 939 md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1); 940 pos=find(structmd.spcvelocity(:,1)); md.stressbalance.spcvx(pos)=structmd.spcvelocity(pos,4); 941 pos=find(structmd.spcvelocity(:,2)); md.stressbalance.spcvy(pos)=structmd.spcvelocity(pos,5); 942 pos=find(structmd.spcvelocity(:,3)); md.stressbalance.spcvz(pos)=structmd.spcvelocity(pos,6); 952 943 end 953 944 if isfield(structmd,'spcvx'), 954 md. diagnostic.spcvx=NaN*ones(md.mesh.numberofvertices,1);955 pos=find(~isnan(structmd.spcvx)); md. diagnostic.spcvx(pos)=structmd.spcvx(pos);945 md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1); 946 pos=find(~isnan(structmd.spcvx)); md.stressbalance.spcvx(pos)=structmd.spcvx(pos); 956 947 end 957 948 if isfield(structmd,'spcvy'), 958 md. diagnostic.spcvy=NaN*ones(md.mesh.numberofvertices,1);959 pos=find(~isnan(structmd.spcvy)); md. diagnostic.spcvy(pos)=structmd.spcvy(pos);949 md.stressbalance.spcvy=NaN*ones(md.mesh.numberofvertices,1); 950 pos=find(~isnan(structmd.spcvy)); md.stressbalance.spcvy(pos)=structmd.spcvy(pos); 960 951 end 961 952 if isfield(structmd,'spcvz'), 962 md. diagnostic.spcvz=NaN*ones(md.mesh.numberofvertices,1);963 pos=find(~isnan(structmd.spcvz)); md. diagnostic.spcvz(pos)=structmd.spcvz(pos);953 md.stressbalance.spcvz=NaN*ones(md.mesh.numberofvertices,1); 954 pos=find(~isnan(structmd.spcvz)); md.stressbalance.spcvz(pos)=structmd.spcvz(pos); 964 955 end 965 956 if isfield(structmd,'pressureload'), 966 957 if ~isempty(structmd.pressureload) & ismember(structmd.pressureload(end,end),[118 119 120]), 967 pos=find(structmd.pressureload(:,end)==120); md. diagnostic.icefront(pos,end)=0;968 pos=find(structmd.pressureload(:,end)==118); md. diagnostic.icefront(pos,end)=1;969 pos=find(structmd.pressureload(:,end)==119); md. diagnostic.icefront(pos,end)=2;958 pos=find(structmd.pressureload(:,end)==120); md.stressbalance.icefront(pos,end)=0; 959 pos=find(structmd.pressureload(:,end)==118); md.stressbalance.icefront(pos,end)=1; 960 pos=find(structmd.pressureload(:,end)==119); md.stressbalance.icefront(pos,end)=2; 970 961 end 971 962 end … … 1039 1030 md.mesh.lowerelements(1:md.mesh.numberofelements2d)=NaN; 1040 1031 end 1041 1042 1032 if ~isfield(structmd,'diagnostic_ref'); 1043 md. diagnostic.referential=NaN*ones(md.mesh.numberofvertices,6);1033 md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6); 1044 1034 end 1045 1035 if ~isfield(structmd,'loadingforce'); 1046 md. diagnostic.loadingforce=0*ones(md.mesh.numberofvertices,3);1036 md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3); 1047 1037 end 1048 1038 … … 1051 1041 disp('Recovering old prognostic class'); 1052 1042 md.masstransport=masstransport(structmd.prognostic); 1043 end 1044 %2013 August 9 1045 if isfield(structmd,'diagnostic') & isa(structmd.diagnostic,'diagnostic'), 1046 disp('Recovering old diagnostic class'); 1047 md.stressbalance=masstransport(structmd.diagnostic); 1053 1048 end 1054 1049 end% }}} … … 1075 1070 md.cluster = generic(); 1076 1071 md.balancethickness = balancethickness(); 1077 md. diagnostic= stressbalance();1072 md.stressbalance = stressbalance(); 1078 1073 md.hydrology = hydrologyshreve(); 1079 1074 md.masstransport = masstransport(); … … 1111 1106 disp(sprintf('%19s: %-22s -- %s','cluster' ,['[1x1 ' class(obj.cluster) ']'],'cluster parameters (number of cpus...)')); 1112 1107 disp(sprintf('%19s: %-22s -- %s','balancethickness',['[1x1 ' class(obj.balancethickness) ']'],'parameters for balancethickness solution')); 1113 disp(sprintf('%19s: %-22s -- %s',' diagnostic' ,['[1x1 ' class(obj.diagnostic) ']'],'parameters for diagnosticsolution'));1108 disp(sprintf('%19s: %-22s -- %s','stressbalance' ,['[1x1 ' class(obj.stressbalance) ']'],'parameters for stressbalance solution')); 1114 1109 disp(sprintf('%19s: %-22s -- %s','groundingline' ,['[1x1 ' class(obj.groundingline) ']'],'parameters for groundingline solution')); 1115 1110 disp(sprintf('%19s: %-22s -- %s','hydrology' ,['[1x1 ' class(obj.hydrology) ']'],'parameters for hydrology solution')); -
issm/trunk-jpl/src/m/classes/model/model.py
r15767 r15771 72 72 73 73 self.balancethickness = balancethickness() 74 self. diagnostic= stressbalance()74 self.stressbalance = stressbalance() 75 75 self.groundingline = groundingline() 76 76 self.hydrology = hydrologyshreve() … … 111 111 'cluster',\ 112 112 'balancethickness',\ 113 ' diagnostic',\113 'stressbalance',\ 114 114 'groundingline',\ 115 115 'hydrology',\ … … 148 148 string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("cluster","[%s,%s]" % ("1x1",obj.cluster.__class__.__name__),"cluster parameters (number of cpus...)")) 149 149 string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("balancethickness","[%s,%s]" % ("1x1",obj.balancethickness.__class__.__name__),"parameters for balancethickness solution")) 150 string="%s\n%s" % (string,"%19s: %-22s -- %s" % (" diagnostic","[%s,%s]" % ("1x1",obj.diagnostic.__class__.__name__),"parameters for diagnosticsolution"))150 string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("stressbalance","[%s,%s]" % ("1x1",obj.stressbalance.__class__.__name__),"parameters for stressbalance solution")) 151 151 string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("groundingline","[%s,%s]" % ("1x1",obj.groundingline.__class__.__name__),"parameters for groundingline solution")) 152 152 string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("hydrology","[%s,%s]" % ("1x1",obj.hydrology.__class__.__name__),"parameters for hydrology solution")) … … 344 344 345 345 #Penalties 346 if numpy.any(numpy.logical_not(numpy.isnan(md2. diagnostic.vertex_pairing))):347 for i in xrange(numpy.size(md1. diagnostic.vertex_pairing,axis=0)):348 md2. diagnostic.vertex_pairing[i,:]=Pnode[md1.diagnostic.vertex_pairing[i,:]]349 md2. diagnostic.vertex_pairing=md2.diagnostic.vertex_pairing[numpy.nonzero(md2.diagnostic.vertex_pairing[:,0])[0],:]346 if numpy.any(numpy.logical_not(numpy.isnan(md2.stressbalance.vertex_pairing))): 347 for i in xrange(numpy.size(md1.stressbalance.vertex_pairing,axis=0)): 348 md2.stressbalance.vertex_pairing[i,:]=Pnode[md1.stressbalance.vertex_pairing[i,:]] 349 md2.stressbalance.vertex_pairing=md2.stressbalance.vertex_pairing[numpy.nonzero(md2.stressbalance.vertex_pairing[:,0])[0],:] 350 350 if numpy.any(numpy.logical_not(numpy.isnan(md2.masstransport.vertex_pairing))): 351 351 for i in xrange(numpy.size(md1.masstransport.vertex_pairing,axis=0)): … … 379 379 nodestoflag1=numpy.intersect1d(orphans_node,pos_node) 380 380 nodestoflag2=Pnode[nodestoflag1].astype(int)-1 381 if numpy.size(md1. diagnostic.spcvx)>1 and numpy.size(md1.diagnostic.spcvy)>2 and numpy.size(md1.diagnostic.spcvz)>2:381 if numpy.size(md1.stressbalance.spcvx)>1 and numpy.size(md1.stressbalance.spcvy)>2 and numpy.size(md1.stressbalance.spcvz)>2: 382 382 if numpy.size(md1.inversion.vx_obs)>1 and numpy.size(md1.inversion.vy_obs)>1: 383 md2. diagnostic.spcvx[nodestoflag2]=md2.inversion.vx_obs[nodestoflag2]384 md2. diagnostic.spcvy[nodestoflag2]=md2.inversion.vy_obs[nodestoflag2]383 md2.stressbalance.spcvx[nodestoflag2]=md2.inversion.vx_obs[nodestoflag2] 384 md2.stressbalance.spcvy[nodestoflag2]=md2.inversion.vy_obs[nodestoflag2] 385 385 else: 386 md2. diagnostic.spcvx[nodestoflag2]=float('NaN')387 md2. diagnostic.spcvy[nodestoflag2]=float('NaN')386 md2.stressbalance.spcvx[nodestoflag2]=float('NaN') 387 md2.stressbalance.spcvy[nodestoflag2]=float('NaN') 388 388 print "\n!! extract warning: spc values should be checked !!\n\n" 389 389 #put 0 for vz 390 md2. diagnostic.spcvz[nodestoflag2]=0390 md2.stressbalance.spcvz[nodestoflag2]=0 391 391 if numpy.any(numpy.logical_not(numpy.isnan(md1.thermal.spctemperature))): 392 392 md2.thermal.spctemperature[nodestoflag2,0]=1 … … 608 608 609 609 #boundary conditions 610 md. diagnostic.spcvx=project3d(md,'vector',md.diagnostic.spcvx,'type','node')611 md. diagnostic.spcvy=project3d(md,'vector',md.diagnostic.spcvy,'type','node')612 md. diagnostic.spcvz=project3d(md,'vector',md.diagnostic.spcvz,'type','node')610 md.stressbalance.spcvx=project3d(md,'vector',md.stressbalance.spcvx,'type','node') 611 md.stressbalance.spcvy=project3d(md,'vector',md.stressbalance.spcvy,'type','node') 612 md.stressbalance.spcvz=project3d(md,'vector',md.stressbalance.spcvz,'type','node') 613 613 md.thermal.spctemperature=project3d(md,'vector',md.thermal.spctemperature,'type','node','layer',md.mesh.numberoflayers,'padding',float('NaN')) 614 614 md.masstransport.spcthickness=project3d(md,'vector',md.masstransport.spcthickness,'type','node') 615 615 md.balancethickness.spcthickness=project3d(md,'vector',md.balancethickness.spcthickness,'type','node') 616 md. diagnostic.referential=project3d(md,'vector',md.diagnostic.referential,'type','node')617 md. diagnostic.loadingforce=project3d(md,'vector',md.diagnostic.loadingforce,'type','node')616 md.stressbalance.referential=project3d(md,'vector',md.stressbalance.referential,'type','node') 617 md.stressbalance.loadingforce=project3d(md,'vector',md.stressbalance.loadingforce,'type','node') 618 618 619 619 #connectivity -
issm/trunk-jpl/src/m/classes/model/planet.m
r15767 r15771 39 39 md.solver = solver(); 40 40 if ismumps(), 41 md.solver = addoptions(md.solver, DiagnosticVertAnalysisEnum(),mumpsoptions());41 md.solver = addoptions(md.solver,StressbalanceVerticalAnalysisEnum(),mumpsoptions()); 42 42 else 43 md.solver = addoptions(md.solver, DiagnosticVertAnalysisEnum(),iluasmoptions());43 md.solver = addoptions(md.solver,StressbalanceVerticalAnalysisEnum(),iluasmoptions()); 44 44 end 45 45 md.cluster = generic(); 46 46 md.balancethickness = balancethickness(); 47 md. diagnostic = diagnostic();47 md.stressbalance = stressbalance(); 48 48 md.hydrology = hydrology(); 49 49 md.masstransport = masstransport(); -
issm/trunk-jpl/src/m/classes/modellist.m
r15767 r15771 214 214 % obj=solve(obj,varargin) 215 215 % where varargin is a lit of paired arguments. 216 % arguments can be: 'analysis_type': ' diagnostic','thermal','masstransport','transient'216 % arguments can be: 'analysis_type': 'stressbalance','thermal','masstransport','transient' 217 217 % 218 218 % Examples: 219 % obj=solve(obj,'analysis_type',' diagnostic');219 % obj=solve(obj,'analysis_type','stressbalance'); 220 220 221 221 %recover options -
issm/trunk-jpl/src/m/classes/oldclasses/diagnostic.m
r15768 r15771 1 % DIAGNOSTICclass definition1 %STRESSBALANCE class definition 2 2 % 3 3 % Usage: 4 % diagnostic=diagnostic();5 6 classdef diagnostic4 % stressbalance=stressbalance(); 5 6 classdef stressbalance 7 7 properties (SetAccess=public) 8 8 spcvx = NaN; … … 45 45 end 46 46 47 if size(md. diagnostic.icefront,2)==3 || size(md.diagnostic.icefront,2)==5,48 front=md. diagnostic.icefront;49 md. diagnostic.icefront=[front 1*md.mask.elementonfloatingice(front(:,end))];47 if size(md.stressbalance.icefront,2)==3 || size(md.stressbalance.icefront,2)==5, 48 front=md.stressbalance.icefront; 49 md.stressbalance.icefront=[front 1*md.mask.elementonfloatingice(front(:,end))]; 50 50 end 51 51 end% }}} 52 52 end 53 53 methods 54 function obj = diagnostic(varargin) % {{{54 function obj = stressbalance(varargin) % {{{ 55 55 switch nargin 56 56 case 0 … … 77 77 78 78 %coefficient to update the viscosity between each iteration of 79 %a diagnosticaccording to the following formula79 %a stressbalance according to the following formula 80 80 %viscosity(n)=viscosity(n)+viscosity_overshoot(viscosity(n)-viscosity(n-1)) 81 81 obj.viscosity_overshoot=0; … … 93 93 94 94 %Early return 95 if ~ismember( DiagnosticHorizAnalysisEnum(),analyses), return; end96 %if ~ismember( DiagnosticHorizAnalysisEnum(),analyses) | (solution==TransientSolutionEnum() & md.transient.isdiagnostic==0), return; end97 98 md = checkfield(md,' diagnostic.spcvx','forcing',1);99 md = checkfield(md,' diagnostic.spcvy','forcing',1);100 if md.mesh.dimension==3, md = checkfield(md,' diagnostic.spcvz','forcing',1); end101 md = checkfield(md,' diagnostic.restol','size',[1 1],'>',0,'NaN',1);102 md = checkfield(md,' diagnostic.reltol','size',[1 1]);103 md = checkfield(md,' diagnostic.abstol','size',[1 1]);104 md = checkfield(md,' diagnostic.isnewton','numel',[1],'values',[0 1 2]);105 md = checkfield(md,' diagnostic.FSreconditioning','size',[1 1],'NaN',1);106 md = checkfield(md,' diagnostic.viscosity_overshoot','size',[1 1],'NaN',1);95 if ~ismember(StressbalanceAnalysisEnum(),analyses), return; end 96 %if ~ismember(StressbalanceAnalysisEnum(),analyses) | (solution==TransientSolutionEnum() & md.transient.isstressbalance==0), return; end 97 98 md = checkfield(md,'stressbalance.spcvx','forcing',1); 99 md = checkfield(md,'stressbalance.spcvy','forcing',1); 100 if md.mesh.dimension==3, md = checkfield(md,'stressbalance.spcvz','forcing',1); end 101 md = checkfield(md,'stressbalance.restol','size',[1 1],'>',0,'NaN',1); 102 md = checkfield(md,'stressbalance.reltol','size',[1 1]); 103 md = checkfield(md,'stressbalance.abstol','size',[1 1]); 104 md = checkfield(md,'stressbalance.isnewton','numel',[1],'values',[0 1 2]); 105 md = checkfield(md,'stressbalance.FSreconditioning','size',[1 1],'NaN',1); 106 md = checkfield(md,'stressbalance.viscosity_overshoot','size',[1 1],'NaN',1); 107 107 if md.mesh.dimension==2, 108 md = checkfield(md,' diagnostic.icefront','size',[NaN 4],'NaN',1);108 md = checkfield(md,'stressbalance.icefront','size',[NaN 4],'NaN',1); 109 109 else 110 md = checkfield(md,' diagnostic.icefront','size',[NaN 6],'NaN',1);111 end 112 md = checkfield(md,' diagnostic.icefront(:,end)','values',[0 1 2]);113 md = checkfield(md,' diagnostic.maxiter','size',[1 1],'>=',1);114 md = checkfield(md,' diagnostic.referential','size',[md.mesh.numberofvertices 6]);115 md = checkfield(md,' diagnostic.loadingforce','size',[md.mesh.numberofvertices 3]);116 if ~isempty(md. diagnostic.requested_outputs),117 md = checkfield(md,' diagnostic.requested_outputs','size',[NaN 1]);110 md = checkfield(md,'stressbalance.icefront','size',[NaN 6],'NaN',1); 111 end 112 md = checkfield(md,'stressbalance.icefront(:,end)','values',[0 1 2]); 113 md = checkfield(md,'stressbalance.maxiter','size',[1 1],'>=',1); 114 md = checkfield(md,'stressbalance.referential','size',[md.mesh.numberofvertices 6]); 115 md = checkfield(md,'stressbalance.loadingforce','size',[md.mesh.numberofvertices 3]); 116 if ~isempty(md.stressbalance.requested_outputs), 117 md = checkfield(md,'stressbalance.requested_outputs','size',[NaN 1]); 118 118 end 119 119 120 120 %singular solution 121 if ~(any(~isnan(md. diagnostic.spcvx)) & any(~isnan(md.diagnostic.spcvy))),121 if ~(any(~isnan(md.stressbalance.spcvx)) & any(~isnan(md.stressbalance.spcvy))), 122 122 md = checkmessage(md,['model is not well posed (singular). You need at least one node with fixed velocity!']); 123 123 end 124 124 %CHECK THAT EACH LINES CONTAINS ONLY NAN VALUES OR NO NAN VALUES 125 if any(sum(isnan(md. diagnostic.referential),2)~=0 & sum(isnan(md.diagnostic.referential),2)~=6),126 md = checkmessage(md,['Each line of diagnostic.referential should contain either only NaN values or no NaN values']);125 if any(sum(isnan(md.stressbalance.referential),2)~=0 & sum(isnan(md.stressbalance.referential),2)~=6), 126 md = checkmessage(md,['Each line of stressbalance.referential should contain either only NaN values or no NaN values']); 127 127 end 128 128 %CHECK THAT THE TWO VECTORS PROVIDED ARE ORTHOGONAL 129 if any(sum(isnan(md. diagnostic.referential),2)==0),130 pos=find(sum(isnan(md. diagnostic.referential),2)==0);131 if any(abs(dot(md. diagnostic.referential(pos,1:3),md.diagnostic.referential(pos,4:6),2))>eps),132 md = checkmessage(md,['Vectors in diagnostic.referential (columns 1 to 3 and 4 to 6) must be orthogonal']);129 if any(sum(isnan(md.stressbalance.referential),2)==0), 130 pos=find(sum(isnan(md.stressbalance.referential),2)==0); 131 if any(abs(dot(md.stressbalance.referential(pos,1:3),md.stressbalance.referential(pos,4:6),2))>eps), 132 md = checkmessage(md,['Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal']); 133 133 end 134 134 end … … 136 136 if md.mesh.dimension==3 & md.flowequation.isFS, 137 137 pos=find(md.mask.vertexongroundedice & md.mesh.vertexonbed); 138 if any(~isnan(md. diagnostic.referential(pos,:))),138 if any(~isnan(md.stressbalance.referential(pos,:))), 139 139 md = checkmessage(md,['no referential should be specified for basal vertices of grounded ice']); 140 140 end 141 md = checkfield(md,' diagnostic.FSreconditioning','>',0);141 md = checkfield(md,'stressbalance.FSreconditioning','>',0); 142 142 end 143 143 end % }}} 144 144 function disp(obj) % {{{ 145 145 146 disp(sprintf(' Diagnosticsolution parameters:'));146 disp(sprintf(' Stressbalance solution parameters:')); 147 147 148 148 disp(sprintf('\n %s','Convergence criteria:')); … … 204 204 pos=find(data(:,end)==1); data(pos,end)=WaterEnum(); 205 205 pos=find(data(:,end)==2); data(pos,end)=IceEnum(); 206 WriteData(fid,'data',data,'enum', DiagnosticIcefrontEnum(),'format','DoubleMat','mattype',3);206 WriteData(fid,'data',data,'enum',StressbalanceIcefrontEnum(),'format','DoubleMat','mattype',3); 207 207 end % }}} 208 208 end -
issm/trunk-jpl/src/m/classes/qmu/@dakota_method/dakota_method.m
r14264 r15771 560 560 dm.params.initial_trust_radius=-1.; 561 561 dm.params.covariance=0; 562 dm.params.regression_ diagnostics=false;562 dm.params.regression_stressbalances=false; 563 563 case {'nlssol_sqp'} 564 564 dm.type ='lsq'; -
issm/trunk-jpl/src/m/classes/qmu/@dakota_method/dmeth_params_write.m
r15284 r15771 300 300 param_write(fid,sbeg,'initial_trust_radius',' = ','\n',dm.params); 301 301 param_write(fid,sbeg,'covariance',' = ','\n',dm.params); 302 param_write(fid,sbeg,'regression_ diagnostics','','\n',dm.params);302 param_write(fid,sbeg,'regression_stressbalances','','\n',dm.params); 303 303 304 304 case {'nlssol_sqp'} -
issm/trunk-jpl/src/m/classes/steadystate.m
r15131 r15771 35 35 end 36 36 37 if isnan(md. diagnostic.reltol),38 md = checkmessage(md,['for a steadystate computation, diagnostic.reltol (relative convergence criterion) must be defined!']);37 if isnan(md.stressbalance.reltol), 38 md = checkmessage(md,['for a steadystate computation, stressbalance.reltol (relative convergence criterion) must be defined!']); 39 39 end 40 40 end % }}} -
issm/trunk-jpl/src/m/classes/steadystate.py
r15131 r15771 48 48 md.checkmessage("for a steadystate computation, timestepping.time_step must be zero.") 49 49 50 if numpy.isnan(md. diagnostic.reltol):51 md.checkmessage("for a steadystate computation, diagnostic.reltol (relative convergence criterion) must be defined!")50 if numpy.isnan(md.stressbalance.reltol): 51 md.checkmessage("for a steadystate computation, stressbalance.reltol (relative convergence criterion) must be defined!") 52 52 53 53 return md -
issm/trunk-jpl/src/m/classes/stressbalance.m
r15621 r15771 77 77 78 78 %Early return 79 if ~ismember( DiagnosticHorizAnalysisEnum(),analyses), return; end79 if ~ismember(StressbalanceAnalysisEnum(),analyses), return; end 80 80 81 md = checkfield(md,' diagnostic.spcvx','forcing',1);82 md = checkfield(md,' diagnostic.spcvy','forcing',1);83 if md.mesh.dimension==3, md = checkfield(md,' diagnostic.spcvz','forcing',1); end84 md = checkfield(md,' diagnostic.restol','size',[1 1],'>',0,'NaN',1);85 md = checkfield(md,' diagnostic.reltol','size',[1 1]);86 md = checkfield(md,' diagnostic.abstol','size',[1 1]);87 md = checkfield(md,' diagnostic.isnewton','numel',[1],'values',[0 1 2]);88 md = checkfield(md,' diagnostic.FSreconditioning','size',[1 1],'NaN',1);89 md = checkfield(md,' diagnostic.viscosity_overshoot','size',[1 1],'NaN',1);90 md = checkfield(md,' diagnostic.maxiter','size',[1 1],'>=',1);91 md = checkfield(md,' diagnostic.referential','size',[md.mesh.numberofvertices 6]);92 md = checkfield(md,' diagnostic.loadingforce','size',[md.mesh.numberofvertices 3]);93 if ~isempty(md. diagnostic.requested_outputs),94 md = checkfield(md,' diagnostic.requested_outputs','size',[NaN 1]);81 md = checkfield(md,'stressbalance.spcvx','forcing',1); 82 md = checkfield(md,'stressbalance.spcvy','forcing',1); 83 if md.mesh.dimension==3, md = checkfield(md,'stressbalance.spcvz','forcing',1); end 84 md = checkfield(md,'stressbalance.restol','size',[1 1],'>',0,'NaN',1); 85 md = checkfield(md,'stressbalance.reltol','size',[1 1]); 86 md = checkfield(md,'stressbalance.abstol','size',[1 1]); 87 md = checkfield(md,'stressbalance.isnewton','numel',[1],'values',[0 1 2]); 88 md = checkfield(md,'stressbalance.FSreconditioning','size',[1 1],'NaN',1); 89 md = checkfield(md,'stressbalance.viscosity_overshoot','size',[1 1],'NaN',1); 90 md = checkfield(md,'stressbalance.maxiter','size',[1 1],'>=',1); 91 md = checkfield(md,'stressbalance.referential','size',[md.mesh.numberofvertices 6]); 92 md = checkfield(md,'stressbalance.loadingforce','size',[md.mesh.numberofvertices 3]); 93 if ~isempty(md.stressbalance.requested_outputs), 94 md = checkfield(md,'stressbalance.requested_outputs','size',[NaN 1]); 95 95 end 96 96 97 97 %singular solution 98 if ~(any(~isnan(md. diagnostic.spcvx)) & any(~isnan(md.diagnostic.spcvy))),98 if ~(any(~isnan(md.stressbalance.spcvx)) & any(~isnan(md.stressbalance.spcvy))), 99 99 md = checkmessage(md,['model is not well posed (singular). You need at least one node with fixed velocity!']); 100 100 end 101 101 %CHECK THAT EACH LINES CONTAINS ONLY NAN VALUES OR NO NAN VALUES 102 if any(sum(isnan(md. diagnostic.referential),2)~=0 & sum(isnan(md.diagnostic.referential),2)~=6),103 md = checkmessage(md,['Each line of diagnostic.referential should contain either only NaN values or no NaN values']);102 if any(sum(isnan(md.stressbalance.referential),2)~=0 & sum(isnan(md.stressbalance.referential),2)~=6), 103 md = checkmessage(md,['Each line of stressbalance.referential should contain either only NaN values or no NaN values']); 104 104 end 105 105 %CHECK THAT THE TWO VECTORS PROVIDED ARE ORTHOGONAL 106 if any(sum(isnan(md. diagnostic.referential),2)==0),107 pos=find(sum(isnan(md. diagnostic.referential),2)==0);108 if any(abs(dot(md. diagnostic.referential(pos,1:3),md.diagnostic.referential(pos,4:6),2))>eps),109 md = checkmessage(md,['Vectors in diagnostic.referential (columns 1 to 3 and 4 to 6) must be orthogonal']);106 if any(sum(isnan(md.stressbalance.referential),2)==0), 107 pos=find(sum(isnan(md.stressbalance.referential),2)==0); 108 if any(abs(dot(md.stressbalance.referential(pos,1:3),md.stressbalance.referential(pos,4:6),2))>eps), 109 md = checkmessage(md,['Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal']); 110 110 end 111 111 end … … 113 113 if md.mesh.dimension==3 & md.flowequation.isFS, 114 114 pos=find(md.mask.vertexongroundedice & md.mesh.vertexonbed); 115 if any(~isnan(md. diagnostic.referential(pos,:))),115 if any(~isnan(md.stressbalance.referential(pos,:))), 116 116 md = checkmessage(md,['no referential should be specified for basal vertices of grounded ice']); 117 117 end 118 md = checkfield(md,' diagnostic.FSreconditioning','>',0);118 md = checkfield(md,'stressbalance.FSreconditioning','>',0); 119 119 end 120 120 end % }}} … … 156 156 yts=365.0*24.0*3600.0; 157 157 158 WriteData(fid,'object',obj,'class',' diagnostic','fieldname','spcvx','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1);159 WriteData(fid,'object',obj,'class',' diagnostic','fieldname','spcvy','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1);160 WriteData(fid,'object',obj,'class',' diagnostic','fieldname','spcvz','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1);161 WriteData(fid,'object',obj,'class',' diagnostic','fieldname','restol','format','Double');162 WriteData(fid,'object',obj,'class',' diagnostic','fieldname','reltol','format','Double');163 WriteData(fid,'object',obj,'class',' diagnostic','fieldname','abstol','format','Double');164 WriteData(fid,'object',obj,'class',' diagnostic','fieldname','isnewton','format','Integer');165 WriteData(fid,'object',obj,'class',' diagnostic','fieldname','FSreconditioning','format','Double');166 WriteData(fid,'object',obj,'class',' diagnostic','fieldname','viscosity_overshoot','format','Double');167 WriteData(fid,'object',obj,'class',' diagnostic','fieldname','maxiter','format','Integer');168 WriteData(fid,'object',obj,'class',' diagnostic','fieldname','shelf_dampening','format','Integer');169 WriteData(fid,'object',obj,'class',' diagnostic','fieldname','vertex_pairing','format','DoubleMat','mattype',3);170 WriteData(fid,'object',obj,'class',' diagnostic','fieldname','penalty_factor','format','Double');171 WriteData(fid,'object',obj,'class',' diagnostic','fieldname','rift_penalty_lock','format','Integer');172 WriteData(fid,'object',obj,'class',' diagnostic','fieldname','rift_penalty_threshold','format','Integer');173 WriteData(fid,'object',obj,'class',' diagnostic','fieldname','referential','format','DoubleMat','mattype',1);174 WriteData(fid,'object',obj,'class',' diagnostic','fieldname','requested_outputs','format','DoubleMat','mattype',3);158 WriteData(fid,'object',obj,'class','stressbalance','fieldname','spcvx','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1); 159 WriteData(fid,'object',obj,'class','stressbalance','fieldname','spcvy','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1); 160 WriteData(fid,'object',obj,'class','stressbalance','fieldname','spcvz','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1); 161 WriteData(fid,'object',obj,'class','stressbalance','fieldname','restol','format','Double'); 162 WriteData(fid,'object',obj,'class','stressbalance','fieldname','reltol','format','Double'); 163 WriteData(fid,'object',obj,'class','stressbalance','fieldname','abstol','format','Double'); 164 WriteData(fid,'object',obj,'class','stressbalance','fieldname','isnewton','format','Integer'); 165 WriteData(fid,'object',obj,'class','stressbalance','fieldname','FSreconditioning','format','Double'); 166 WriteData(fid,'object',obj,'class','stressbalance','fieldname','viscosity_overshoot','format','Double'); 167 WriteData(fid,'object',obj,'class','stressbalance','fieldname','maxiter','format','Integer'); 168 WriteData(fid,'object',obj,'class','stressbalance','fieldname','shelf_dampening','format','Integer'); 169 WriteData(fid,'object',obj,'class','stressbalance','fieldname','vertex_pairing','format','DoubleMat','mattype',3); 170 WriteData(fid,'object',obj,'class','stressbalance','fieldname','penalty_factor','format','Double'); 171 WriteData(fid,'object',obj,'class','stressbalance','fieldname','rift_penalty_lock','format','Integer'); 172 WriteData(fid,'object',obj,'class','stressbalance','fieldname','rift_penalty_threshold','format','Integer'); 173 WriteData(fid,'object',obj,'class','stressbalance','fieldname','referential','format','DoubleMat','mattype',1); 174 WriteData(fid,'object',obj,'class','stressbalance','fieldname','requested_outputs','format','DoubleMat','mattype',3); 175 175 WriteData(fid,'data',obj.loadingforce(:,1),'format','DoubleMat','mattype',1,'enum',LoadingforceXEnum); 176 176 WriteData(fid,'data',obj.loadingforce(:,2),'format','DoubleMat','mattype',1,'enum',LoadingforceYEnum); -
issm/trunk-jpl/src/m/classes/stressbalance.py
r15621 r15771 107 107 108 108 #Early return 109 if DiagnosticHorizAnalysisEnum() not in analyses:109 if StressbalanceAnalysisEnum() not in analyses: 110 110 return md 111 111 112 md = checkfield(md,' diagnostic.spcvx','forcing',1)113 md = checkfield(md,' diagnostic.spcvy','forcing',1)112 md = checkfield(md,'stressbalance.spcvx','forcing',1) 113 md = checkfield(md,'stressbalance.spcvy','forcing',1) 114 114 if md.mesh.dimension==3: 115 md = checkfield(md,' diagnostic.spcvz','forcing',1)116 md = checkfield(md,' diagnostic.restol','size',[1],'>',0)117 md = checkfield(md,' diagnostic.reltol','size',[1])118 md = checkfield(md,' diagnostic.abstol','size',[1])119 md = checkfield(md,' diagnostic.isnewton','numel',[1],'values',[0,1,2])120 md = checkfield(md,' diagnostic.FSreconditioning','size',[1],'NaN',1)121 md = checkfield(md,' diagnostic.viscosity_overshoot','size',[1],'NaN',1)122 md = checkfield(md,' diagnostic.maxiter','size',[1],'>=',1)123 md = checkfield(md,' diagnostic.referential','size',[md.mesh.numberofvertices,6])124 md = checkfield(md,' diagnostic.loadingforce','size',[md.mesh.numberofvertices,3])125 if not md. diagnostic.requested_outputs:126 md = checkfield(md,' diagnostic.requested_outputs','size',[float('NaN'),1])115 md = checkfield(md,'stressbalance.spcvz','forcing',1) 116 md = checkfield(md,'stressbalance.restol','size',[1],'>',0) 117 md = checkfield(md,'stressbalance.reltol','size',[1]) 118 md = checkfield(md,'stressbalance.abstol','size',[1]) 119 md = checkfield(md,'stressbalance.isnewton','numel',[1],'values',[0,1,2]) 120 md = checkfield(md,'stressbalance.FSreconditioning','size',[1],'NaN',1) 121 md = checkfield(md,'stressbalance.viscosity_overshoot','size',[1],'NaN',1) 122 md = checkfield(md,'stressbalance.maxiter','size',[1],'>=',1) 123 md = checkfield(md,'stressbalance.referential','size',[md.mesh.numberofvertices,6]) 124 md = checkfield(md,'stressbalance.loadingforce','size',[md.mesh.numberofvertices,3]) 125 if not md.stressbalance.requested_outputs: 126 md = checkfield(md,'stressbalance.requested_outputs','size',[float('NaN'),1]) 127 127 128 128 #singular solution 129 # if ~any((~isnan(md. diagnostic.spcvx)+~isnan(md.diagnostic.spcvy))==2),130 if not numpy.any(numpy.logical_and(numpy.logical_not(numpy.isnan(md. diagnostic.spcvx)),numpy.logical_not(numpy.isnan(md.diagnostic.spcvy)))):129 # if ~any((~isnan(md.stressbalance.spcvx)+~isnan(md.stressbalance.spcvy))==2), 130 if not numpy.any(numpy.logical_and(numpy.logical_not(numpy.isnan(md.stressbalance.spcvx)),numpy.logical_not(numpy.isnan(md.stressbalance.spcvy)))): 131 131 md.checkmessage("model is not well posed (singular). You need at least one node with fixed velocity!") 132 132 #CHECK THAT EACH LINES CONTAINS ONLY NAN VALUES OR NO NAN VALUES 133 # if any(sum(isnan(md. diagnostic.referential),2)~=0 & sum(isnan(md.diagnostic.referential),2)~=6),134 if numpy.any(numpy.logical_and(numpy.sum(numpy.isnan(md. diagnostic.referential),axis=1)!=0,numpy.sum(numpy.isnan(md.diagnostic.referential),axis=1)!=6)):135 md.checkmessage("Each line of diagnostic.referential should contain either only NaN values or no NaN values")133 # if any(sum(isnan(md.stressbalance.referential),2)~=0 & sum(isnan(md.stressbalance.referential),2)~=6), 134 if numpy.any(numpy.logical_and(numpy.sum(numpy.isnan(md.stressbalance.referential),axis=1)!=0,numpy.sum(numpy.isnan(md.stressbalance.referential),axis=1)!=6)): 135 md.checkmessage("Each line of stressbalance.referential should contain either only NaN values or no NaN values") 136 136 #CHECK THAT THE TWO VECTORS PROVIDED ARE ORTHOGONAL 137 # if any(sum(isnan(md. diagnostic.referential),2)==0),138 if numpy.any(numpy.sum(numpy.isnan(md. diagnostic.referential),axis=1)==0):139 pos=[i for i,item in enumerate(numpy.sum(numpy.isnan(md. diagnostic.referential),axis=1)) if item==0]137 # if any(sum(isnan(md.stressbalance.referential),2)==0), 138 if numpy.any(numpy.sum(numpy.isnan(md.stressbalance.referential),axis=1)==0): 139 pos=[i for i,item in enumerate(numpy.sum(numpy.isnan(md.stressbalance.referential),axis=1)) if item==0] 140 140 # numpy.inner (and numpy.dot) calculate all the dot product permutations, resulting in a full matrix multiply 141 # if numpy.any(numpy.abs(numpy.inner(md. diagnostic.referential[pos,0:2],md.diagnostic.referential[pos,3:5]).diagonal())>sys.float_info.epsilon):142 # md.checkmessage("Vectors in diagnostic.referential (columns 1 to 3 and 4 to 6) must be orthogonal")143 for item in md. diagnostic.referential[pos,:]:141 # if numpy.any(numpy.abs(numpy.inner(md.stressbalance.referential[pos,0:2],md.stressbalance.referential[pos,3:5]).diagonal())>sys.float_info.epsilon): 142 # md.checkmessage("Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal") 143 for item in md.stressbalance.referential[pos,:]: 144 144 if numpy.abs(numpy.inner(item[0:2],item[3:5]))>sys.float_info.epsilon: 145 md.checkmessage("Vectors in diagnostic.referential (columns 1 to 3 and 4 to 6) must be orthogonal")145 md.checkmessage("Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal") 146 146 #CHECK THAT NO rotation specified for FS Grounded ice at base 147 147 # if md.mesh.dimension==3 & md.flowequation.isFS, 148 148 if md.mesh.dimension==3 and md.flowequation.isFS: 149 149 pos=numpy.nonzero(numpy.logical_and(md.mask.vertexongroundedice,md.mesh.vertexonbed)) 150 if numpy.any(numpy.logical_not(numpy.isnan(md. diagnostic.referential[pos,:]))):150 if numpy.any(numpy.logical_not(numpy.isnan(md.stressbalance.referential[pos,:]))): 151 151 md.checkmessage("no referential should be specified for basal vertices of grounded ice") 152 152 … … 157 157 yts=365.0*24.0*3600.0 158 158 159 WriteData(fid,'object',self,'class',' diagnostic','fieldname','spcvx','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1)160 WriteData(fid,'object',self,'class',' diagnostic','fieldname','spcvy','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1)161 WriteData(fid,'object',self,'class',' diagnostic','fieldname','spcvz','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1)162 WriteData(fid,'object',self,'class',' diagnostic','fieldname','restol','format','Double')163 WriteData(fid,'object',self,'class',' diagnostic','fieldname','reltol','format','Double')164 WriteData(fid,'object',self,'class',' diagnostic','fieldname','abstol','format','Double')165 WriteData(fid,'object',self,'class',' diagnostic','fieldname','isnewton','format','Integer')166 WriteData(fid,'object',self,'class',' diagnostic','fieldname','FSreconditioning','format','Double')167 WriteData(fid,'object',self,'class',' diagnostic','fieldname','viscosity_overshoot','format','Double')168 WriteData(fid,'object',self,'class',' diagnostic','fieldname','maxiter','format','Integer')169 WriteData(fid,'object',self,'class',' diagnostic','fieldname','shelf_dampening','format','Integer')170 WriteData(fid,'object',self,'class',' diagnostic','fieldname','vertex_pairing','format','DoubleMat','mattype',3)171 WriteData(fid,'object',self,'class',' diagnostic','fieldname','penalty_factor','format','Double')172 WriteData(fid,'object',self,'class',' diagnostic','fieldname','rift_penalty_lock','format','Integer')173 WriteData(fid,'object',self,'class',' diagnostic','fieldname','rift_penalty_threshold','format','Integer')174 WriteData(fid,'object',self,'class',' diagnostic','fieldname','referential','format','DoubleMat','mattype',1)175 WriteData(fid,'object',self,'class',' diagnostic','fieldname','requested_outputs','format','DoubleMat','mattype',3)159 WriteData(fid,'object',self,'class','stressbalance','fieldname','spcvx','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1) 160 WriteData(fid,'object',self,'class','stressbalance','fieldname','spcvy','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1) 161 WriteData(fid,'object',self,'class','stressbalance','fieldname','spcvz','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1) 162 WriteData(fid,'object',self,'class','stressbalance','fieldname','restol','format','Double') 163 WriteData(fid,'object',self,'class','stressbalance','fieldname','reltol','format','Double') 164 WriteData(fid,'object',self,'class','stressbalance','fieldname','abstol','format','Double') 165 WriteData(fid,'object',self,'class','stressbalance','fieldname','isnewton','format','Integer') 166 WriteData(fid,'object',self,'class','stressbalance','fieldname','FSreconditioning','format','Double') 167 WriteData(fid,'object',self,'class','stressbalance','fieldname','viscosity_overshoot','format','Double') 168 WriteData(fid,'object',self,'class','stressbalance','fieldname','maxiter','format','Integer') 169 WriteData(fid,'object',self,'class','stressbalance','fieldname','shelf_dampening','format','Integer') 170 WriteData(fid,'object',self,'class','stressbalance','fieldname','vertex_pairing','format','DoubleMat','mattype',3) 171 WriteData(fid,'object',self,'class','stressbalance','fieldname','penalty_factor','format','Double') 172 WriteData(fid,'object',self,'class','stressbalance','fieldname','rift_penalty_lock','format','Integer') 173 WriteData(fid,'object',self,'class','stressbalance','fieldname','rift_penalty_threshold','format','Integer') 174 WriteData(fid,'object',self,'class','stressbalance','fieldname','referential','format','DoubleMat','mattype',1) 175 WriteData(fid,'object',self,'class','stressbalance','fieldname','requested_outputs','format','DoubleMat','mattype',3) 176 176 WriteData(fid,'data',self.loadingforce[:,0],'format','DoubleMat','mattype',1,'enum',LoadingforceXEnum()) 177 177 WriteData(fid,'data',self.loadingforce[:,1],'format','DoubleMat','mattype',1,'enum',LoadingforceYEnum()) -
issm/trunk-jpl/src/m/classes/toolkits.m
r15564 r15771 22 22 function obj = addoptions(obj,analysis,varargin) % {{{ 23 23 % Usage example: 24 % md.toolkits=addoptions(md.toolkits, DiagnosticHorizAnalysisEnum(),FSoptions());25 % md.toolkits=addoptions(md.toolkits, DiagnosticHorizAnalysisEnum());24 % md.toolkits=addoptions(md.toolkits,StressbalanceAnalysisEnum(),FSoptions()); 25 % md.toolkits=addoptions(md.toolkits,StressbalanceAnalysisEnum()); 26 26 27 27 %Convert analysis from enum to string -
issm/trunk-jpl/src/m/classes/toolkits.py
r15564 r15771 39 39 def addoptions(self,analysis,*args): # {{{ 40 40 # Usage example: 41 # md.toolkits=addoptions(md.toolkits, DiagnosticHorizAnalysisEnum(),FSoptions());42 # md.toolkits=addoptions(md.toolkits, DiagnosticHorizAnalysisEnum());41 # md.toolkits=addoptions(md.toolkits,StressbalanceAnalysisEnum(),FSoptions()); 42 # md.toolkits=addoptions(md.toolkits,StressbalanceAnalysisEnum()); 43 43 44 44 #Convert analysis from enum to string -
issm/trunk-jpl/src/m/classes/transient.m
r15767 r15771 7 7 properties (SetAccess=public) 8 8 ismasstransport = 0; 9 is diagnostic= 0;9 isstressbalance = 0; 10 10 isthermal = 0; 11 11 isgroundingline = 0; … … 24 24 function obj = setdefaultparameters(obj) % {{{ 25 25 26 %full analysis: Diagnostic, Masstransport and Thermal but no groundingline migration for now26 %full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now 27 27 obj.ismasstransport=1; 28 obj.is diagnostic=1;28 obj.isstressbalance=1; 29 29 obj.isthermal=1; 30 30 obj.isgroundingline=0; … … 38 38 39 39 md = checkfield(md,'transient.ismasstransport','numel',[1],'values',[0 1]); 40 md = checkfield(md,'transient.is diagnostic','numel',[1],'values',[0 1]);40 md = checkfield(md,'transient.isstressbalance','numel',[1],'values',[0 1]); 41 41 md = checkfield(md,'transient.isthermal','numel',[1],'values',[0 1]); 42 42 md = checkfield(md,'transient.isgroundingline','numel',[1],'values',[0 1]); … … 49 49 50 50 fielddisplay(obj,'ismasstransport','indicates if a masstransport solution is used in the transient'); 51 fielddisplay(obj,'is diagnostic','indicates if a diagnosticsolution is used in the transient');51 fielddisplay(obj,'isstressbalance','indicates if a stressbalance solution is used in the transient'); 52 52 fielddisplay(obj,'isthermal','indicates if a thermal solution is used in the transient'); 53 53 fielddisplay(obj,'isgroundingline','indicates if a groundingline migration is used in the transient'); … … 58 58 function marshall(obj,md,fid) % {{{ 59 59 WriteData(fid,'object',obj,'fieldname','ismasstransport','format','Boolean'); 60 WriteData(fid,'object',obj,'fieldname','is diagnostic','format','Boolean');60 WriteData(fid,'object',obj,'fieldname','isstressbalance','format','Boolean'); 61 61 WriteData(fid,'object',obj,'fieldname','isthermal','format','Boolean'); 62 62 WriteData(fid,'object',obj,'fieldname','isgroundingline','format','Boolean'); -
issm/trunk-jpl/src/m/classes/transient.py
r15767 r15771 14 14 def __init__(self): # {{{ 15 15 self.ismasstransport = False 16 self.is diagnostic= False16 self.isstressbalance = False 17 17 self.isthermal = False 18 18 self.isgroundingline = False … … 27 27 string=' transient solution parameters:' 28 28 string="%s\n%s"%(string,fielddisplay(self,'ismasstransport','indicates if a masstransport solution is used in the transient')) 29 string="%s\n%s"%(string,fielddisplay(self,'is diagnostic','indicates if a diagnosticsolution is used in the transient'))29 string="%s\n%s"%(string,fielddisplay(self,'isstressbalance','indicates if a stressbalance solution is used in the transient')) 30 30 string="%s\n%s"%(string,fielddisplay(self,'isthermal','indicates if a thermal solution is used in the transient')) 31 31 string="%s\n%s"%(string,fielddisplay(self,'isgroundingline','indicates if a groundingline migration is used in the transient')) … … 36 36 def setdefaultparameters(self): # {{{ 37 37 38 #full analysis: Diagnostic, Masstransport and Thermal but no groundingline migration for now38 #full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now 39 39 self.ismasstransport=True 40 self.is diagnostic=True40 self.isstressbalance=True 41 41 self.isthermal=True 42 42 self.isgroundingline=False … … 52 52 53 53 md = checkfield(md,'transient.ismasstransport','numel',[1],'values',[0,1]) 54 md = checkfield(md,'transient.is diagnostic','numel',[1],'values',[0,1])54 md = checkfield(md,'transient.isstressbalance','numel',[1],'values',[0,1]) 55 55 md = checkfield(md,'transient.isthermal','numel',[1],'values',[0,1]) 56 56 md = checkfield(md,'transient.isgroundingline','numel',[1],'values',[0,1]) … … 63 63 def marshall(self,md,fid): # {{{ 64 64 WriteData(fid,'object',self,'fieldname','ismasstransport','format','Boolean') 65 WriteData(fid,'object',self,'fieldname','is diagnostic','format','Boolean')65 WriteData(fid,'object',self,'fieldname','isstressbalance','format','Boolean') 66 66 WriteData(fid,'object',self,'fieldname','isthermal','format','Boolean') 67 67 WriteData(fid,'object',self,'fieldname','isgroundingline','format','Boolean') -
issm/trunk-jpl/src/m/consistency/ismodelselfconsistent.m
r15767 r15771 45 45 switch solutiontype, 46 46 47 case DiagnosticSolutionEnum(),47 case StressbalanceSolutionEnum(), 48 48 numanalyses=5; 49 analyses=[ DiagnosticHorizAnalysisEnum();DiagnosticVertAnalysisEnum();DiagnosticSIAAnalysisEnum();SurfaceSlopeAnalysisEnum();BedSlopeAnalysisEnum()];49 analyses=[StressbalanceAnalysisEnum();StressbalanceVerticalAnalysisEnum();StressbalanceSIAAnalysisEnum();SurfaceSlopeAnalysisEnum();BedSlopeAnalysisEnum()]; 50 50 51 51 case SteadystateSolutionEnum(), 52 52 numanalyses=7; 53 analyses=[ DiagnosticHorizAnalysisEnum();DiagnosticVertAnalysisEnum();DiagnosticSIAAnalysisEnum();SurfaceSlopeAnalysisEnum();BedSlopeAnalysisEnum();ThermalAnalysisEnum();MeltingAnalysisEnum()];53 analyses=[StressbalanceAnalysisEnum();StressbalanceVerticalAnalysisEnum();StressbalanceSIAAnalysisEnum();SurfaceSlopeAnalysisEnum();BedSlopeAnalysisEnum();ThermalAnalysisEnum();MeltingAnalysisEnum()]; 54 54 55 55 case ThermalSolutionEnum(), … … 87 87 case TransientSolutionEnum(), 88 88 numanalyses=9; 89 analyses=[ DiagnosticHorizAnalysisEnum();DiagnosticVertAnalysisEnum();DiagnosticSIAAnalysisEnum();SurfaceSlopeAnalysisEnum();BedSlopeAnalysisEnum();ThermalAnalysisEnum();MeltingAnalysisEnum();EnthalpyAnalysisEnum();MasstransportAnalysisEnum()];89 analyses=[StressbalanceAnalysisEnum();StressbalanceVerticalAnalysisEnum();StressbalanceSIAAnalysisEnum();SurfaceSlopeAnalysisEnum();BedSlopeAnalysisEnum();ThermalAnalysisEnum();MeltingAnalysisEnum();EnthalpyAnalysisEnum();MasstransportAnalysisEnum()]; 90 90 91 91 case FlaimSolutionEnum(), -
issm/trunk-jpl/src/m/consistency/ismodelselfconsistent.py
r15767 r15771 10 10 """ 11 11 12 if solutiontype == DiagnosticSolutionEnum():12 if solutiontype == StressbalanceSolutionEnum(): 13 13 numanalyses=5 14 analyses=[ DiagnosticHorizAnalysisEnum(),DiagnosticVertAnalysisEnum(),DiagnosticSIAAnalysisEnum(),SurfaceSlopeAnalysisEnum(),BedSlopeAnalysisEnum()]14 analyses=[StressbalanceAnalysisEnum(),StressbalanceVerticalAnalysisEnum(),StressbalanceSIAAnalysisEnum(),SurfaceSlopeAnalysisEnum(),BedSlopeAnalysisEnum()] 15 15 16 16 elif solutiontype == SteadystateSolutionEnum(): 17 17 numanalyses=7 18 analyses=[ DiagnosticHorizAnalysisEnum(),DiagnosticVertAnalysisEnum(),DiagnosticSIAAnalysisEnum(),SurfaceSlopeAnalysisEnum(),BedSlopeAnalysisEnum(),ThermalAnalysisEnum(),MeltingAnalysisEnum()]18 analyses=[StressbalanceAnalysisEnum(),StressbalanceVerticalAnalysisEnum(),StressbalanceSIAAnalysisEnum(),SurfaceSlopeAnalysisEnum(),BedSlopeAnalysisEnum(),ThermalAnalysisEnum(),MeltingAnalysisEnum()] 19 19 20 20 elif solutiontype == ThermalSolutionEnum(): … … 48 48 elif solutiontype == TransientSolutionEnum(): 49 49 numanalyses=9 50 analyses=[ DiagnosticHorizAnalysisEnum(),DiagnosticVertAnalysisEnum(),DiagnosticSIAAnalysisEnum(),SurfaceSlopeAnalysisEnum(),BedSlopeAnalysisEnum(),ThermalAnalysisEnum(),MeltingAnalysisEnum(),EnthalpyAnalysisEnum(),MasstransportAnalysisEnum()]50 analyses=[StressbalanceAnalysisEnum(),StressbalanceVerticalAnalysisEnum(),StressbalanceSIAAnalysisEnum(),SurfaceSlopeAnalysisEnum(),BedSlopeAnalysisEnum(),ThermalAnalysisEnum(),MeltingAnalysisEnum(),EnthalpyAnalysisEnum(),MasstransportAnalysisEnum()] 51 51 52 52 elif solutiontype == FlaimSolutionEnum(): -
issm/trunk-jpl/src/m/contrib/hack/tres.m
r13806 r15771 4 4 % Usage: md=tres(md,string) 5 5 % 6 % Example: md=tres(md,' diagnostic');6 % Example: md=tres(md,'stressbalance'); 7 7 8 8 %check number of arguments 9 9 10 if strcmpi(string,' diagnostic'),10 if strcmpi(string,'stressbalance'), 11 11 if md.mesh.dimension==2, 12 md.initialization.vx=md.results. DiagnosticSolution.Vx;13 md.initialization.vy=md.results. DiagnosticSolution.Vy;12 md.initialization.vx=md.results.StressbalanceSolution.Vx; 13 md.initialization.vy=md.results.StressbalanceSolution.Vy; 14 14 else 15 md.initialization.vx=md.results. DiagnosticSolution.Vx;16 md.initialization.vy=md.results. DiagnosticSolution.Vy;17 md.initialization.vz=md.results. DiagnosticSolution.Vz;15 md.initialization.vx=md.results.StressbalanceSolution.Vx; 16 md.initialization.vy=md.results.StressbalanceSolution.Vy; 17 md.initialization.vz=md.results.StressbalanceSolution.Vz; 18 18 end 19 md.initialization.vel=md.results. DiagnosticSolution.Vel;19 md.initialization.vel=md.results.StressbalanceSolution.Vel; 20 20 21 if isfield(md.results. DiagnosticSolution,'Pressure'),22 md.initialization.pressure=md.results. DiagnosticSolution.Pressure;21 if isfield(md.results.StressbalanceSolution,'Pressure'), 22 md.initialization.pressure=md.results.StressbalanceSolution.Pressure; 23 23 end 24 24 if ~isempty(md.rifts.riftstruct), 25 if isfield(md.results. DiagnosticSolution,'riftproperties'),26 md.rifts.riftproperties=md.results. DiagnosticSolution.riftproperties;25 if isfield(md.results.StressbalanceSolution,'riftproperties'), 26 md.rifts.riftproperties=md.results.StressbalanceSolution.riftproperties; 27 27 end 28 28 end -
issm/trunk-jpl/src/m/contrib/massbalance/contourmassbalance.m
r13006 r15771 19 19 %Get segments enveloping contour 20 20 segments=contourenvelope(md,file); 21 %md. diagnostic.icefront=segments; plotmodel(md,'data','pressureload','expdisp',file);21 %md.stressbalance.icefront=segments; plotmodel(md,'data','pressureload','expdisp',file); 22 22 23 23 %get flag list of elements and nodes inside the contour -
issm/trunk-jpl/src/m/enum/EnumDefinitions.py
r15767 r15771 41 41 def ConstantsYtsEnum(): return StringToEnum("ConstantsYts")[0] 42 42 def DependentObjectEnum(): return StringToEnum("DependentObject")[0] 43 def DiagnosticAbstolEnum(): return StringToEnum("DiagnosticAbstol")[0]44 def DiagnosticIcefrontEnum(): return StringToEnum("DiagnosticIcefront")[0]45 def DiagnosticIsnewtonEnum(): return StringToEnum("DiagnosticIsnewton")[0]46 def DiagnosticMaxiterEnum(): return StringToEnum("DiagnosticMaxiter")[0]47 def DiagnosticNumRequestedOutputsEnum(): return StringToEnum("DiagnosticNumRequestedOutputs")[0]48 def DiagnosticPenaltyFactorEnum(): return StringToEnum("DiagnosticPenaltyFactor")[0]49 def DiagnosticReferentialEnum(): return StringToEnum("DiagnosticReferential")[0]50 def DiagnosticReltolEnum(): return StringToEnum("DiagnosticReltol")[0]51 def DiagnosticRequestedOutputsEnum(): return StringToEnum("DiagnosticRequestedOutputs")[0]52 def DiagnosticRestolEnum(): return StringToEnum("DiagnosticRestol")[0]53 def DiagnosticRiftPenaltyLockEnum(): return StringToEnum("DiagnosticRiftPenaltyLock")[0]54 def DiagnosticRiftPenaltyThresholdEnum(): return StringToEnum("DiagnosticRiftPenaltyThreshold")[0]55 def DiagnosticShelfDampeningEnum(): return StringToEnum("DiagnosticShelfDampening")[0]56 def DiagnosticSpcvxEnum(): return StringToEnum("DiagnosticSpcvx")[0]57 def DiagnosticSpcvyEnum(): return StringToEnum("DiagnosticSpcvy")[0]58 def DiagnosticSpcvzEnum(): return StringToEnum("DiagnosticSpcvz")[0]59 def DiagnosticFSreconditioningEnum(): return StringToEnum("DiagnosticFSreconditioning")[0]60 def DiagnosticVertexPairingEnum(): return StringToEnum("DiagnosticVertexPairing")[0]61 def DiagnosticViscosityOvershootEnum(): return StringToEnum("DiagnosticViscosityOvershoot")[0]43 def StressbalanceAbstolEnum(): return StringToEnum("StressbalanceAbstol")[0] 44 def StressbalanceIcefrontEnum(): return StringToEnum("StressbalanceIcefront")[0] 45 def StressbalanceIsnewtonEnum(): return StringToEnum("StressbalanceIsnewton")[0] 46 def StressbalanceMaxiterEnum(): return StringToEnum("StressbalanceMaxiter")[0] 47 def StressbalanceNumRequestedOutputsEnum(): return StringToEnum("StressbalanceNumRequestedOutputs")[0] 48 def StressbalancePenaltyFactorEnum(): return StringToEnum("StressbalancePenaltyFactor")[0] 49 def StressbalanceReferentialEnum(): return StringToEnum("StressbalanceReferential")[0] 50 def StressbalanceReltolEnum(): return StringToEnum("StressbalanceReltol")[0] 51 def StressbalanceRequestedOutputsEnum(): return StringToEnum("StressbalanceRequestedOutputs")[0] 52 def StressbalanceRestolEnum(): return StringToEnum("StressbalanceRestol")[0] 53 def StressbalanceRiftPenaltyLockEnum(): return StringToEnum("StressbalanceRiftPenaltyLock")[0] 54 def StressbalanceRiftPenaltyThresholdEnum(): return StringToEnum("StressbalanceRiftPenaltyThreshold")[0] 55 def StressbalanceShelfDampeningEnum(): return StringToEnum("StressbalanceShelfDampening")[0] 56 def StressbalanceSpcvxEnum(): return StringToEnum("StressbalanceSpcvx")[0] 57 def StressbalanceSpcvyEnum(): return StringToEnum("StressbalanceSpcvy")[0] 58 def StressbalanceSpcvzEnum(): return StringToEnum("StressbalanceSpcvz")[0] 59 def StressbalanceFSreconditioningEnum(): return StringToEnum("StressbalanceFSreconditioning")[0] 60 def StressbalanceVertexPairingEnum(): return StringToEnum("StressbalanceVertexPairing")[0] 61 def StressbalanceViscosityOvershootEnum(): return StringToEnum("StressbalanceViscosityOvershoot")[0] 62 62 def LoadingforceXEnum(): return StringToEnum("LoadingforceX")[0] 63 63 def LoadingforceYEnum(): return StringToEnum("LoadingforceY")[0] … … 254 254 def TimesteppingTimeAdaptEnum(): return StringToEnum("TimesteppingTimeAdapt")[0] 255 255 def TimesteppingTimeStepEnum(): return StringToEnum("TimesteppingTimeStep")[0] 256 def TransientIs diagnosticEnum(): return StringToEnum("TransientIsdiagnostic")[0]256 def TransientIsstressbalanceEnum(): return StringToEnum("TransientIsstressbalance")[0] 257 257 def TransientIsgroundinglineEnum(): return StringToEnum("TransientIsgroundingline")[0] 258 258 def TransientIsmasstransportEnum(): return StringToEnum("TransientIsmasstransport")[0] … … 278 278 def BedSlopeXAnalysisEnum(): return StringToEnum("BedSlopeXAnalysis")[0] 279 279 def BedSlopeYAnalysisEnum(): return StringToEnum("BedSlopeYAnalysis")[0] 280 def DiagnosticHorizAnalysisEnum(): return StringToEnum("DiagnosticHorizAnalysis")[0]281 def DiagnosticSIAAnalysisEnum(): return StringToEnum("DiagnosticSIAAnalysis")[0]282 def DiagnosticSolutionEnum(): return StringToEnum("DiagnosticSolution")[0]283 def DiagnosticVertAnalysisEnum(): return StringToEnum("DiagnosticVertAnalysis")[0]280 def StressbalanceAnalysisEnum(): return StringToEnum("StressbalanceAnalysis")[0] 281 def StressbalanceSIAAnalysisEnum(): return StringToEnum("StressbalanceSIAAnalysis")[0] 282 def StressbalanceSolutionEnum(): return StringToEnum("StressbalanceSolution")[0] 283 def StressbalanceVerticalAnalysisEnum(): return StringToEnum("StressbalanceVerticalAnalysis")[0] 284 284 def EnthalpyAnalysisEnum(): return StringToEnum("EnthalpyAnalysis")[0] 285 285 def EnthalpySolutionEnum(): return StringToEnum("EnthalpySolution")[0] -
issm/trunk-jpl/src/m/inversions/MisfitDeinterlace.m
r13010 r15771 6 6 % 7 7 % Example: 8 % Jstruct=MisfitDeinterlace(md.results. diagnostic.J,md.fit)8 % Jstruct=MisfitDeinterlace(md.results.stressbalance.J,md.fit) 9 9 % 10 10 % -
issm/trunk-jpl/src/m/mech/cfl_step.m
r13730 r15771 8 8 % 9 9 % Example: 10 % dt=cfl_step(md,md.results. DiagnosticSolution.Vx,md.results.DiagnosticSolution.Vy)10 % dt=cfl_step(md,md.results.StressbalanceSolution.Vx,md.results.StressbalanceSolution.Vy) 11 11 12 12 %Check length of velocities -
issm/trunk-jpl/src/m/miscellaneous/issmdoc.m
r15567 r15771 12 12 disp(sprintf('%-63s %s',' md=parameterize(md,''Square.par'');','%fills all the other fields of the model')); 13 13 disp(sprintf('%-63s %s',' md=setflowequation(md,''SSA'',''all'');','%defines all elements as SSA''s SSA')); 14 disp(sprintf('%-63s %s',' md=solve(md, DiagnosticSolutionEnum());','%solve for stress balance'));15 disp(sprintf('%-63s %s',' plotmodel(md,''data'',md.results. DiagnosticSolution.Vel);','%displays the velocity (type plotdoc for plotmodel help)'));14 disp(sprintf('%-63s %s',' md=solve(md,StressbalanceSolutionEnum());','%solve for stress balance')); 15 disp(sprintf('%-63s %s',' plotmodel(md,''data'',md.results.StressbalanceSolution.Vel);','%displays the velocity (type plotdoc for plotmodel help)')); -
issm/trunk-jpl/src/m/parameterization/setflowequation.m
r15567 r15771 97 97 %First modify FSflag to get rid of elements contrained everywhere (spc + border with HO or SSA) 98 98 if any(FSflag), 99 fullspcnodes=double((~isnan(md. diagnostic.spcvx)+~isnan(md.diagnostic.spcvy)+~isnan(md.diagnostic.spcvz))==3 | (nodeonHO & nodeonFS)); %find all the nodes on the boundary of the domain without icefront99 fullspcnodes=double((~isnan(md.stressbalance.spcvx)+~isnan(md.stressbalance.spcvy)+~isnan(md.stressbalance.spcvz))==3 | (nodeonHO & nodeonFS)); %find all the nodes on the boundary of the domain without icefront 100 100 fullspcelems=double(sum(fullspcnodes(md.mesh.elements),2)==6); %find all the nodes on the boundary of the domain without icefront 101 101 FSflag(find(fullspcelems))=0; … … 117 117 118 118 %Now take care of the coupling between SSA and HO 119 md. diagnostic.vertex_pairing=[];119 md.stressbalance.vertex_pairing=[]; 120 120 nodeonSSAHO=zeros(md.mesh.numberofvertices,1); 121 121 nodeonHOFS=zeros(md.mesh.numberofvertices,1); … … 136 136 penalties=[penalties; [bordernodes2d bordernodes2d+md.mesh.numberofvertices2d*(i)]]; 137 137 end 138 md. diagnostic.vertex_pairing=penalties;138 md.stressbalance.vertex_pairing=penalties; 139 139 end 140 140 elseif strcmpi(coupling_method,'tiling'), -
issm/trunk-jpl/src/m/parameterization/setflowequation.py
r15567 r15771 91 91 #First modify FSflag to get rid of elements contrained everywhere (spc + border with HO or SSA) 92 92 if any(FSflag): 93 # fullspcnodes=double((~isnan(md. diagnostic.spcvx)+~isnan(md.diagnostic.spcvy)+~isnan(md.diagnostic.spcvz))==3 | (nodeonHO & nodeonFS)); %find all the nodes on the boundary of the domain without icefront94 fullspcnodes=numpy.logical_or(numpy.logical_not(numpy.isnan(md. diagnostic.spcvx)).astype(int)+ \95 numpy.logical_not(numpy.isnan(md. diagnostic.spcvy)).astype(int)+ \96 numpy.logical_not(numpy.isnan(md. diagnostic.spcvz)).astype(int)==3, \93 # fullspcnodes=double((~isnan(md.stressbalance.spcvx)+~isnan(md.stressbalance.spcvy)+~isnan(md.stressbalance.spcvz))==3 | (nodeonHO & nodeonFS)); %find all the nodes on the boundary of the domain without icefront 94 fullspcnodes=numpy.logical_or(numpy.logical_not(numpy.isnan(md.stressbalance.spcvx)).astype(int)+ \ 95 numpy.logical_not(numpy.isnan(md.stressbalance.spcvy)).astype(int)+ \ 96 numpy.logical_not(numpy.isnan(md.stressbalance.spcvz)).astype(int)==3, \ 97 97 numpy.logical_and(nodeonHO,nodeonFS).reshape(-1,1)).astype(int) #find all the nodes on the boundary of the domain without icefront 98 98 # fullspcelems=double(sum(fullspcnodes(md.mesh.elements),2)==6); %find all the nodes on the boundary of the domain without icefront … … 113 113 114 114 #Now take care of the coupling between SSA and HO 115 md. diagnostic.vertex_pairing=numpy.array([])115 md.stressbalance.vertex_pairing=numpy.array([]) 116 116 nodeonSSAHO=numpy.zeros(md.mesh.numberofvertices,bool) 117 117 nodeonHOFS=numpy.zeros(md.mesh.numberofvertices,bool) … … 131 131 for i in xrange(1,numlayers): 132 132 penalties=numpy.vstack((penalties,numpy.hstack((bordernodes2d.reshape(-1,1),bordernodes2d.reshape(-1,1)+md.mesh.numberofvertices2d*(i))))) 133 md. diagnostic.vertex_pairing=penalties133 md.stressbalance.vertex_pairing=penalties 134 134 135 135 elif strcmpi(coupling_method,'tiling'): -
issm/trunk-jpl/src/m/plot/plot_BC.m
r14286 r15771 10 10 if strcmpi(dirichleton,'on'), 11 11 h1=plot3(... 12 md.mesh.x(find(~isnan(md. diagnostic.spcvx(1:md.mesh.numberofvertices,1)))),...13 md.mesh.y(find(~isnan(md. diagnostic.spcvx(1:md.mesh.numberofvertices,1)))),...14 md.mesh.z(find(~isnan(md. diagnostic.spcvx(1:md.mesh.numberofvertices,1)))),...12 md.mesh.x(find(~isnan(md.stressbalance.spcvx(1:md.mesh.numberofvertices,1)))),... 13 md.mesh.y(find(~isnan(md.stressbalance.spcvx(1:md.mesh.numberofvertices,1)))),... 14 md.mesh.z(find(~isnan(md.stressbalance.spcvx(1:md.mesh.numberofvertices,1)))),... 15 15 'ro','MarkerSize',14,'MarkerFaceColor','r'); 16 16 h2=plot3(... 17 md.mesh.x(find(~isnan(md. diagnostic.spcvy(1:md.mesh.numberofvertices,1)))),...18 md.mesh.y(find(~isnan(md. diagnostic.spcvy(1:md.mesh.numberofvertices,1)))),...19 md.mesh.z(find(~isnan(md. diagnostic.spcvy(1:md.mesh.numberofvertices,1)))),...17 md.mesh.x(find(~isnan(md.stressbalance.spcvy(1:md.mesh.numberofvertices,1)))),... 18 md.mesh.y(find(~isnan(md.stressbalance.spcvy(1:md.mesh.numberofvertices,1)))),... 19 md.mesh.z(find(~isnan(md.stressbalance.spcvy(1:md.mesh.numberofvertices,1)))),... 20 20 'bo','MarkerSize',10,'MarkerFaceColor','b'); 21 21 h3=plot3(... 22 md.mesh.x(find(~isnan(md. diagnostic.spcvz(1:md.mesh.numberofvertices,1)))),...23 md.mesh.y(find(~isnan(md. diagnostic.spcvz(1:md.mesh.numberofvertices,1)))),...24 md.mesh.z(find(~isnan(md. diagnostic.spcvz(1:md.mesh.numberofvertices,1)))),...22 md.mesh.x(find(~isnan(md.stressbalance.spcvz(1:md.mesh.numberofvertices,1)))),... 23 md.mesh.y(find(~isnan(md.stressbalance.spcvz(1:md.mesh.numberofvertices,1)))),... 24 md.mesh.z(find(~isnan(md.stressbalance.spcvz(1:md.mesh.numberofvertices,1)))),... 25 25 'yo','MarkerSize',6 ,'MarkerFaceColor','y'); 26 26 end -
issm/trunk-jpl/src/m/plot/plot_referential.m
r13730 r15771 12 12 %process mesh and data 13 13 [x y z elements is2d isplanet]=processmesh(md,[],options); 14 referential=md. diagnostic.referential;14 referential=md.stressbalance.referential; 15 15 16 Xhat=md. diagnostic.referential(:,1:3);16 Xhat=md.stressbalance.referential(:,1:3); 17 17 pos=find(sum(isnan(Xhat),2)); 18 18 Xhat(pos,:)=repmat([1 0 0],size(pos,1),1); … … 20 20 Xhat=Xhat./[Xhatnorm Xhatnorm Xhatnorm]; 21 21 22 Zhat=md. diagnostic.referential(:,4:6);22 Zhat=md.stressbalance.referential(:,4:6); 23 23 pos=find(sum(isnan(Zhat),2)); 24 24 Zhat(pos,:)=repmat([0 0 1],size(pos,1),1); … … 87 87 88 88 %apply options 89 options=addfielddefault(options,'title',' Diagnosticreferential');89 options=addfielddefault(options,'title','Stressbalance referential'); 90 90 options=addfielddefault(options,'colorbar',0); 91 91 applyoptions(md,[],options); -
issm/trunk-jpl/src/m/plot/plotdoc.m
r15035 r15771 27 27 disp(' - ''highlightvertices'': to highlight vertices (use highlight option to enter the vertex list'); 28 28 disp(' - ''mesh'': draw mesh using trisurf'); 29 disp(' - ''referential'': diagnosticreferential');29 disp(' - ''referential'': stressbalance referential'); 30 30 disp(' - ''riftvel'': velocities along rifts'); 31 31 disp(' - ''riftrelvel'': relative velocities along rifts'); -
issm/trunk-jpl/src/m/qmu/dakota_m_write.m
r3092 r15771 207 207 fprintf(fidm,'%% Run the solution.\n\n'); 208 208 209 fprintf(fidm,['\tmd=solve(md,'' diagnostic'',''' package ''');\n\n']);209 fprintf(fidm,['\tmd=solve(md,''stressbalance'',''' package ''');\n\n']); 210 210 211 211 end -
issm/trunk-jpl/src/m/qmu/examples/direct.m
r13646 r15771 1 1 %using library mode of Dakota, only for parallel runs. 2 2 md.qmu.params.direct=true; 3 md.qmu.params.analysis_driver=' diagnostic';3 md.qmu.params.analysis_driver='stressbalance'; 4 4 md.qmu.params.evaluation_concurrency=1; 5 5 -
issm/trunk-jpl/src/m/qmu/examples/lrel_mmf.m
r13646 r15771 86 86 %% sample analysis 87 87 88 %md=solve(md,'analysis_type',' diagnostic');88 %md=solve(md,'analysis_type','stressbalance'); 89 89 90 90 %plotmodel(md,'data','mesh') -
issm/trunk-jpl/src/m/qmu/examples/samp_direct.m
r9650 r15771 50 50 51 51 md.qmu.params.direct=true; 52 md.qmu.params.analysis_driver=' diagnostic';52 md.qmu.params.analysis_driver='stressbalance'; 53 53 md.qmu.params.evaluation_concurrency=1; 54 54 -
issm/trunk-jpl/src/m/qmu/preqmu.m
r12365 r15771 1 1 function md=preqmu(md,options) 2 2 %QMU - apply Quantification of Margins and Uncertainties techniques 3 % to a solution sequence (like diagnostic.m, progonstic.m, etc ...),3 % to a solution sequence (like stressbalance.m, progonstic.m, etc ...), 4 4 % using the Dakota software from Sandia. 5 5 % -
issm/trunk-jpl/src/m/qmu/process_qmu_options.m
r15767 r15771 39 39 %check solution type is supported 40 40 if ~(strcmpi(analysis_type,'control') | ... 41 strcmpi(analysis_type,' diagnostic') | ...41 strcmpi(analysis_type,'stressbalance') | ... 42 42 strcmpi(analysis_type,'masstransport') | ... 43 43 strcmpi(analysis_type,'thermal') | ... -
issm/trunk-jpl/src/m/regional/BasinConstrain.m
r13730 r15771 48 48 49 49 %all elements outside the constraint domain are equivalent to water. all nodes outside are spc'd. 50 md. diagnostic.spcvx(vertexnotondomain)=md.inversion.vx_obs(vertexnotondomain);51 md. diagnostic.spcvy(vertexnotondomain)=md.inversion.vy_obs(vertexnotondomain);50 md.stressbalance.spcvx(vertexnotondomain)=md.inversion.vx_obs(vertexnotondomain); 51 md.stressbalance.spcvy(vertexnotondomain)=md.inversion.vy_obs(vertexnotondomain); 52 52 md.mask.elementonwater(elementnotondomain)=1; 53 53 … … 56 56 numpos=unique(md.mesh.elements(pos,:)); 57 57 nodes=setdiff(1:1:md.mesh.numberofvertices,numpos); 58 md. diagnostic.spcvx(nodes)=md.inversion.vx_obs(nodes);59 md. diagnostic.spcvy(nodes)=md.inversion.vy_obs(nodes);58 md.stressbalance.spcvx(nodes)=md.inversion.vx_obs(nodes); 59 md.stressbalance.spcvy(nodes)=md.inversion.vy_obs(nodes); 60 60 61 61 %make sure icefronts that are completely spc'd are taken out: 62 free_segments=find((~isnan(md. diagnostic.spcvx(md.diagnostic.icefront(:,1:2))) + ~isnan(md.diagnostic.spcvy(md.diagnostic.icefront(:,1:2))))~=2);63 md. diagnostic.icefront=md.diagnostic.icefront(free_segments,:);62 free_segments=find((~isnan(md.stressbalance.spcvx(md.stressbalance.icefront(:,1:2))) + ~isnan(md.stressbalance.spcvy(md.stressbalance.icefront(:,1:2))))~=2); 63 md.stressbalance.icefront=md.stressbalance.icefront(free_segments,:); -
issm/trunk-jpl/src/m/regional/BasinConstrainShelf.m
r13730 r15771 48 48 49 49 %all elements outside the constraint domain are equivalent to water. all nodes outside are spc'd. 50 md. diagnostic.spcvx(vertexnotondomain)=md.inversion.vx_obs(vertexnotondomain);51 md. diagnostic.spcvy(vertexnotondomain)=md.inversion.vy_obs(vertexnotondomain);50 md.stressbalance.spcvx(vertexnotondomain)=md.inversion.vx_obs(vertexnotondomain); 51 md.stressbalance.spcvy(vertexnotondomain)=md.inversion.vy_obs(vertexnotondomain); 52 52 md.mask.elementonwater(elementnotondomain)=1; 53 53 … … 56 56 numpos=unique(md.mesh.elements(pos,:)); 57 57 nodes=setdiff(1:1:md.mesh.numberofvertices,numpos); 58 md. diagnostic.spcvx(nodes)=md.inversion.vx_obs(nodes);59 md. diagnostic.spcvy(nodes)=md.inversion.vy_obs(nodes);58 md.stressbalance.spcvx(nodes)=md.inversion.vx_obs(nodes); 59 md.stressbalance.spcvy(nodes)=md.inversion.vy_obs(nodes); 60 60 61 61 %make sure any node with NaN velocity is spc'd: 62 62 %we spc to the smoothed value, so that control methods don't go berserk trying to figure out what reaction force to apply for the spc to stand. 63 63 pos=find(isnan(md.inversion.vel_obs_raw)); 64 md. diagnostic.spcvx(pos)=md.inversion.vx_obs(pos);65 md. diagnostic.spcvy(pos)=md.inversion.vy_obs(pos);64 md.stressbalance.spcvx(pos)=md.inversion.vx_obs(pos); 65 md.stressbalance.spcvy(pos)=md.inversion.vy_obs(pos); 66 66 67 67 %iceshelves: any vertex on floating ice is spc'd 68 68 pos=find(md.mask.vertexongroundedice); 69 md. diagnostic.spcvx(pos)=md.inversion.vx_obs(pos);70 md. diagnostic.spcvy(pos)=md.inversion.vy_obs(pos);69 md.stressbalance.spcvx(pos)=md.inversion.vx_obs(pos); 70 md.stressbalance.spcvy(pos)=md.inversion.vy_obs(pos); 71 71 72 72 %make sure icefronts that are completely spc'd are taken out: 73 free_segments=find((~isnan(md. diagnostic.spcvx(md.diagnostic.icefront(:,1:2))) + ~isnan(md.diagnostic.spcvy(md.diagnostic.icefront(:,1:2))) )~=2);74 md. diagnostic.icefront=md.diagnostic.icefront(free_segments,:);73 free_segments=find((~isnan(md.stressbalance.spcvx(md.stressbalance.icefront(:,1:2))) + ~isnan(md.stressbalance.spcvy(md.stressbalance.icefront(:,1:2))) )~=2); 74 md.stressbalance.icefront=md.stressbalance.icefront(free_segments,:); -
issm/trunk-jpl/src/m/regional/regionaltransient2d.m
r15767 r15771 115 115 %As long as there are recorded time steps, spc the boundaries with velocities 116 116 if nsteps > 0 117 md2. diagnostic.spcvx=md2.diagnostic.spcvx*ones(1,size(spcx,2));118 md2. diagnostic.spcvy=md2.diagnostic.spcvy*ones(1,size(spcy,2));119 md2. diagnostic.spcvz=md2.diagnostic.spcvz*ones(1,size(spcx,2));117 md2.stressbalance.spcvx=md2.stressbalance.spcvx*ones(1,size(spcx,2)); 118 md2.stressbalance.spcvy=md2.stressbalance.spcvy*ones(1,size(spcy,2)); 119 md2.stressbalance.spcvz=md2.stressbalance.spcvz*ones(1,size(spcx,2)); 120 120 md2.masstransport.spcthickness=md2.masstransport.spcthickness*ones(1,size(spct,2)); 121 md2. diagnostic.spcvx(find(md2.mesh.vertexonboundary),:)=spcx(find(md2.mesh.vertexonboundary),:);122 md2. diagnostic.spcvy(find(md2.mesh.vertexonboundary),:)=spcy(find(md2.mesh.vertexonboundary),:);123 md2. diagnostic.spcvz(find(md2.mesh.vertexonboundary),:)=0;121 md2.stressbalance.spcvx(find(md2.mesh.vertexonboundary),:)=spcx(find(md2.mesh.vertexonboundary),:); 122 md2.stressbalance.spcvy(find(md2.mesh.vertexonboundary),:)=spcy(find(md2.mesh.vertexonboundary),:); 123 md2.stressbalance.spcvz(find(md2.mesh.vertexonboundary),:)=0; 124 124 md2.masstransport.spcthickness(find(md2.mesh.vertexonboundary),:)=spct(find(md2.mesh.vertexonboundary),:); 125 md2. diagnostic.spcvx=[md2.diagnostic.spcvx; steps];126 md2. diagnostic.spcvy=[md2.diagnostic.spcvy; steps];127 md2. diagnostic.spcvz=[md2.diagnostic.spcvz; steps];125 md2.stressbalance.spcvx=[md2.stressbalance.spcvx; steps]; 126 md2.stressbalance.spcvy=[md2.stressbalance.spcvy; steps]; 127 md2.stressbalance.spcvz=[md2.stressbalance.spcvz; steps]; 128 128 md2.masstransport.spcthickness=[md2.masstransport.spcthickness; steps]; 129 129 end 130 130 131 % Diagnostic. Don't spc the icefront vertices.132 if ~isnan(md2. diagnostic.icefront)131 %Stressbalance. Don't spc the icefront vertices. 132 if ~isnan(md2.stressbalance.icefront) 133 133 md1s=md1.extract(area); 134 %md2. diagnostic.icefront=[md2.mesh.segments 2];134 %md2.stressbalance.icefront=[md2.mesh.segments 2]; 135 135 e2=md2.mesh.segments(:,end); 136 136 e1=md1s.mesh.segments(:,end); 137 137 138 138 pload = nan*ones(size(md1s.mesh.elements,1),1); 139 pload(md1s. diagnostic.icefront(:,end-1))=md1s.diagnostic.icefront(:,end);139 pload(md1s.stressbalance.icefront(:,end-1))=md1s.stressbalance.icefront(:,end); 140 140 141 141 x2=mean(md2.mesh.x(md2.mesh.elements(e2,:)),2); … … 145 145 146 146 pload2=griddata(x1,y1,pload,x2,y2,'nearest'); 147 md2. diagnostic.icefront=[md2.mesh.segments(~isnan(pload2),:) pload2(~isnan(pload2))];148 md2. diagnostic.spcvx(unique(md2.diagnostic.icefront(:,1:2)),:)=nan;149 md2. diagnostic.spcvy(unique(md2.diagnostic.icefront(:,1:2)),:)=nan;150 md2. diagnostic.spcvz(unique(md2.diagnostic.icefront(:,1:2)),:)=nan;151 md2.masstransport.spcthickness(unique(md2. diagnostic.icefront(:,1:2)),:)=nan;147 md2.stressbalance.icefront=[md2.mesh.segments(~isnan(pload2),:) pload2(~isnan(pload2))]; 148 md2.stressbalance.spcvx(unique(md2.stressbalance.icefront(:,1:2)),:)=nan; 149 md2.stressbalance.spcvy(unique(md2.stressbalance.icefront(:,1:2)),:)=nan; 150 md2.stressbalance.spcvz(unique(md2.stressbalance.icefront(:,1:2)),:)=nan; 151 md2.masstransport.spcthickness(unique(md2.stressbalance.icefront(:,1:2)),:)=nan; 152 152 end 153 153 -
issm/trunk-jpl/src/m/solve/process_solve_options.m
r15767 r15771 9 9 %solution_type: check on this option, error out otherwise 10 10 solution_type=getfieldvalue(options,'solution_type'); 11 if ~ismember(solution_type,[ DiagnosticSolutionEnum(),MasstransportSolutionEnum(),ThermalSolutionEnum(),...11 if ~ismember(solution_type,[StressbalanceSolutionEnum(),MasstransportSolutionEnum(),ThermalSolutionEnum(),... 12 12 SteadystateSolutionEnum(),TransientSolutionEnum(),EnthalpySolutionEnum(),... 13 13 BalancethicknessSolutionEnum(),BalancethicknessSoftSolutionEnum(),BedSlopeSolutionEnum(),... -
issm/trunk-jpl/src/m/solve/process_solve_options.py
r15767 r15771 18 18 #solution_type: check on this option, error out otherwise 19 19 solution_type=options.getfieldvalue('solution_type') 20 if solution_type not in ( DiagnosticSolutionEnum(),MasstransportSolutionEnum(),ThermalSolutionEnum(),\20 if solution_type not in (StressbalanceSolutionEnum(),MasstransportSolutionEnum(),ThermalSolutionEnum(),\ 21 21 SteadystateSolutionEnum(),TransientSolutionEnum(),EnthalpySolutionEnum(),\ 22 22 BalancethicknessSolutionEnum(),BedSlopeSolutionEnum(),SurfaceSlopeSolutionEnum(),\ -
issm/trunk-jpl/src/m/solve/solve.m
r15767 r15771 7 7 % 8 8 % solution types available comprise: 9 % - DiagnosticSolutionEnum9 % - StressbalanceSolutionEnum 10 10 % - MasstransportSolutionEnum 11 11 % - ThermalSolutionEnum … … 22 22 % 23 23 % Examples: 24 % md=solve(md, DiagnosticSolutionEnum);24 % md=solve(md,StressbalanceSolutionEnum); 25 25 26 26 %recover and process solve options -
issm/trunk-jpl/src/m/solve/solve.py
r15767 r15771 21 21 22 22 solution types available comprise: 23 - DiagnosticSolutionEnum23 - StressbalanceSolutionEnum 24 24 - MasstransportSolutionEnum 25 25 - ThermalSolutionEnum … … 36 36 37 37 Examples: 38 md=solve(md, DiagnosticSolutionEnum);38 md=solve(md,StressbalanceSolutionEnum); 39 39 """ 40 40
Note:
See TracChangeset
for help on using the changeset viewer.