Changeset 8399
- Timestamp:
- 05/23/11 18:46:37 (14 years ago)
- Location:
- issm/trunk
- Files:
-
- 3 added
- 1 deleted
- 40 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/examples/Bumps/Bump1_surface_bed/Square.par
r8394 r8399 68 68 md.rheology_n=3*ones(md.numberofelements,1); 69 69 70 disp(' creating accumulation rates');71 md. accumulation_rate=ones(md.numberofgrids,1)/md.yts; %1m/a70 disp(' creating surface mass balance'); 71 md.surface_mass_balance=ones(md.numberofgrids,1)/md.yts; %1m/a 72 72 md.basal_melting_rate=0*ones(md.numberofgrids,1)/md.yts; %1m/a 73 73 -
issm/trunk/examples/Bumps/Bump1_surface_bed/runme.m
r8392 r8399 12 12 md.vx=PatchToVec(md.results.DiagnosticSolution.Vx); 13 13 md.vy=PatchToVec(md.results.DiagnosticSolution.Vy); 14 md. accumulation_rate(:)=0;14 md.surface_mass_balance(:)=0; 15 15 md.basal_melting_rate(:)=0; 16 16 md.thickness(:)=1; -
issm/trunk/examples/SquareIceShelf/runme.m
r8364 r8399 6 6 md.dt=1; 7 7 md.ndt=3; 8 md.forcings. AccumulationRate=[ones(md.numberofnodes,1),2*ones(md.numberofnodes,1),3*ones(md.numberofnodes,1)];9 md.forcings. AccumulationRate(end+1,:)=[1.5 2.5 5.5]*md.yts;10 md.forcings. MeltingRate=md.forcings.AccumulationRate;8 md.forcings.surface_mass_balance=[ones(md.numberofnodes,1),2*ones(md.numberofnodes,1),3*ones(md.numberofnodes,1)]; 9 md.forcings.surface_mass_balance(end+1,:)=[1.5 2.5 5.5]*md.yts; 10 md.forcings.basal_melting_rate=md.forcings.surface_mass_balance; 11 11 md=solve(md,Transient2DSolutionEnum); -
issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
r8392 r8399 175 175 /*}}}*/ 176 176 /*Inputs {{{1*/ 177 AccumulationRateEnum,178 177 AdjointxEnum, 179 178 AdjointyEnum, … … 247 246 StabilizeConstraintsEnum, 248 247 StokesReconditioningEnum, 248 SurfaceAccumulationRateEnum, 249 SurfaceAblationRateEnum, 249 250 SurfaceAreaEnum, 250 251 SurfaceEnum, 252 SurfaceMassBalanceEnum, 251 253 SurfaceSlopeXEnum, 252 254 SurfaceSlopeYEnum, -
issm/trunk/src/c/EnumDefinitions/EnumToModelField.cpp
r8392 r8399 23 23 case VyObsEnum : return "vy_obs"; 24 24 case GroundingLineMigrationEnum : return "gl_migration"; 25 case AccumulationRateEnum: return "accumulation_rate";26 25 case BasalMeltingRateEnum: return "basal_melting_rate"; 26 case SurfaceAccumulationRateEnum: return "surface_accumulation_rate"; 27 case SurfaceAblationRateEnum: return "surface_ablation_rate"; 28 case SurfaceMassBalanceEnum: return "surface_mass_balance"; 27 29 default : _error_("No model field is associated to enum %s",EnumToStringx(en)); 28 30 } -
issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp
r8392 r8399 143 143 case OpenEnum : return "Open"; 144 144 case ClosedEnum : return "Closed"; 145 case AccumulationRateEnum : return "AccumulationRate";146 145 case AdjointxEnum : return "Adjointx"; 147 146 case AdjointyEnum : return "Adjointy"; … … 215 214 case StabilizeConstraintsEnum : return "StabilizeConstraints"; 216 215 case StokesReconditioningEnum : return "StokesReconditioning"; 216 case SurfaceAccumulationRateEnum : return "SurfaceAccumulationRate"; 217 case SurfaceAblationRateEnum : return "SurfaceAblationRate"; 217 218 case SurfaceAreaEnum : return "SurfaceArea"; 218 219 case SurfaceEnum : return "Surface"; 220 case SurfaceMassBalanceEnum : return "SurfaceMassBalance"; 219 221 case SurfaceSlopeXEnum : return "SurfaceSlopeX"; 220 222 case SurfaceSlopeYEnum : return "SurfaceSlopeY"; -
issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/UpdateElementsBalancethickness.cpp
r8392 r8399 30 30 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy"); 31 31 IoModelFetchData(&iomodel->basal_melting_rate,NULL,NULL,iomodel_handle,"basal_melting_rate"); 32 IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate"); 32 IoModelFetchData(&iomodel->surface_accumulation_rate,NULL,NULL,iomodel_handle,"surface_accumulation_rate"); 33 IoModelFetchData(&iomodel->surface_ablation_rate,NULL,NULL,iomodel_handle,"surface_ablation_rate"); 34 IoModelFetchData(&iomodel->surface_mass_balance,NULL,NULL,iomodel_handle,"surface_mass_balance"); 33 35 IoModelFetchData(&iomodel->dhdt,NULL,NULL,iomodel_handle,"dhdt"); 34 36 if (iomodel->dim==3){ … … 59 61 xfree((void**)&iomodel->vy); 60 62 xfree((void**)&iomodel->basal_melting_rate); 61 xfree((void**)&iomodel->accumulation_rate); 63 xfree((void**)&iomodel->surface_accumulation_rate); 64 xfree((void**)&iomodel->surface_ablation_rate); 65 xfree((void**)&iomodel->surface_mass_balance); 62 66 } -
issm/trunk/src/c/modules/ModelProcessorx/Balancevelocities/UpdateElementsBalancevelocities.cpp
r8392 r8399 30 30 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy"); 31 31 IoModelFetchData(&iomodel->basal_melting_rate,NULL,NULL,iomodel_handle,"basal_melting_rate"); 32 IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate"); 32 IoModelFetchData(&iomodel->surface_accumulation_rate,NULL,NULL,iomodel_handle,"surface_accumulation_rate"); 33 IoModelFetchData(&iomodel->surface_ablation_rate,NULL,NULL,iomodel_handle,"surface_ablation_rate"); 34 IoModelFetchData(&iomodel->surface_mass_balance,NULL,NULL,iomodel_handle,"surface_mass_balance"); 33 35 34 36 if (iomodel->dim==3){ … … 60 62 xfree((void**)&iomodel->vz); 61 63 xfree((void**)&iomodel->basal_melting_rate); 62 xfree((void**)&iomodel->accumulation_rate); 64 xfree((void**)&iomodel->surface_accumulation_rate); 65 xfree((void**)&iomodel->surface_ablation_rate); 66 xfree((void**)&iomodel->surface_mass_balance); 63 67 } -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp
r8392 r8399 45 45 IoModelFetchData(&iomodel->elementonsurface,NULL,NULL,iomodel_handle,"elementonsurface"); 46 46 IoModelFetchData(&iomodel->vz,NULL,NULL,iomodel_handle,"vz"); 47 IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate"); 47 IoModelFetchData(&iomodel->surface_accumulation_rate,NULL,NULL,iomodel_handle,"surface_accumulation_rate"); 48 IoModelFetchData(&iomodel->surface_ablation_rate,NULL,NULL,iomodel_handle,"surface_ablation_rate"); 49 IoModelFetchData(&iomodel->surface_mass_balance,NULL,NULL,iomodel_handle,"surface_mass_balance"); 48 50 IoModelFetchData(&iomodel->basal_melting_rate,NULL,NULL,iomodel_handle,"basal_melting_rate"); 49 51 IoModelFetchData(&iomodel->nodeonstokes,NULL,NULL,iomodel_handle,"nodeonstokes"); … … 81 83 xfree((void**)&iomodel->elementonsurface); 82 84 xfree((void**)&iomodel->elementonwater); 83 xfree((void**)&iomodel->accumulation_rate); 85 xfree((void**)&iomodel->surface_accumulation_rate); 86 xfree((void**)&iomodel->surface_ablation_rate); 87 xfree((void**)&iomodel->surface_mass_balance); 84 88 xfree((void**)&iomodel->basal_melting_rate); 85 89 xfree((void**)&iomodel->nodeonstokes); -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/UpdateElementsDiagnosticVert.cpp
r8392 r8399 34 34 IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater"); 35 35 IoModelFetchData(&iomodel->basal_melting_rate,NULL,NULL,iomodel_handle,"basal_melting_rate"); 36 IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate"); 36 IoModelFetchData(&iomodel->surface_accumulation_rate,NULL,NULL,iomodel_handle,"surface_accumulation_rate"); 37 IoModelFetchData(&iomodel->surface_ablation_rate,NULL,NULL,iomodel_handle,"surface_ablation_rate"); 38 IoModelFetchData(&iomodel->surface_mass_balance,NULL,NULL,iomodel_handle,"surface_mass_balance"); 37 39 IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx"); 38 40 IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy"); … … 60 62 xfree((void**)&iomodel->elementonwater); 61 63 xfree((void**)&iomodel->basal_melting_rate); 62 xfree((void**)&iomodel->accumulation_rate); 64 xfree((void**)&iomodel->surface_accumulation_rate); 65 xfree((void**)&iomodel->surface_ablation_rate); 66 xfree((void**)&iomodel->surface_mass_balance); 63 67 xfree((void**)&iomodel->vx); 64 68 xfree((void**)&iomodel->vy); -
issm/trunk/src/c/modules/ModelProcessorx/Melting/UpdateElementsMelting.cpp
r8392 r8399 38 38 IoModelFetchData(&iomodel->rheology_B,NULL,NULL,iomodel_handle,"rheology_B"); 39 39 IoModelFetchData(&iomodel->rheology_n,NULL,NULL,iomodel_handle,"rheology_n"); 40 IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate"); 40 IoModelFetchData(&iomodel->surface_accumulation_rate,NULL,NULL,iomodel_handle,"surface_accumulation_rate"); 41 IoModelFetchData(&iomodel->surface_ablation_rate,NULL,NULL,iomodel_handle,"surface_ablation_rate"); 42 IoModelFetchData(&iomodel->surface_mass_balance,NULL,NULL,iomodel_handle,"surface_mass_balance"); 41 43 IoModelFetchData(&iomodel->basal_melting_rate,NULL,NULL,iomodel_handle,"basal_melting_rate"); 42 44 IoModelFetchData(&iomodel->pressure,NULL,NULL,iomodel_handle,"pressure"); … … 68 70 xfree((void**)&iomodel->rheology_B); 69 71 xfree((void**)&iomodel->rheology_n); 70 xfree((void**)&iomodel->accumulation_rate);71 72 xfree((void**)&iomodel->basal_melting_rate); 73 xfree((void**)&iomodel->surface_accumulation_rate); 74 xfree((void**)&iomodel->surface_ablation_rate); 75 xfree((void**)&iomodel->surface_mass_balance); 72 76 xfree((void**)&iomodel->pressure); 73 77 } -
issm/trunk/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp
r8392 r8399 27 27 IoModelFetchData(&iomodel->elementoniceshelf,NULL,NULL,iomodel_handle,"elementoniceshelf"); 28 28 IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater"); 29 IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate"); 29 IoModelFetchData(&iomodel->surface_accumulation_rate,NULL,NULL,iomodel_handle,"surface_accumulation_rate"); 30 IoModelFetchData(&iomodel->surface_ablation_rate,NULL,NULL,iomodel_handle,"surface_ablation_rate"); 31 IoModelFetchData(&iomodel->surface_mass_balance,NULL,NULL,iomodel_handle,"surface_mass_balance"); 30 32 IoModelFetchData(&iomodel->basal_melting_rate,NULL,NULL,iomodel_handle,"basal_melting_rate"); 31 33 if(iomodel->basal_melting_rate_correction_apply)IoModelFetchData(&iomodel->basal_melting_rate_correction,NULL,NULL,iomodel_handle,"basal_melting_rate_correction"); … … 59 61 xfree((void**)&iomodel->elementonsurface); 60 62 xfree((void**)&iomodel->elementonwater); 61 xfree((void**)&iomodel->accumulation_rate); 63 xfree((void**)&iomodel->surface_accumulation_rate); 64 xfree((void**)&iomodel->surface_ablation_rate); 65 xfree((void**)&iomodel->surface_mass_balance); 62 66 xfree((void**)&iomodel->basal_melting_rate); 63 67 xfree((void**)&iomodel->basal_melting_rate_correction); -
issm/trunk/src/c/modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp
r8371 r8399 49 49 50 50 /*we now have the forcing for the corresponding time step, for all the nodes. Use this 51 *to write over the existing accumulationinput: */51 *to write over the existing smb input: */ 52 52 counter=0; 53 53 for (k=0;k<iomodel->numberofelements;k++){ -
issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp
r8392 r8399 141 141 else if (strcmp(name,"Open")==0) return OpenEnum; 142 142 else if (strcmp(name,"Closed")==0) return ClosedEnum; 143 else if (strcmp(name,"AccumulationRate")==0) return AccumulationRateEnum;144 143 else if (strcmp(name,"Adjointx")==0) return AdjointxEnum; 145 144 else if (strcmp(name,"Adjointy")==0) return AdjointyEnum; … … 213 212 else if (strcmp(name,"StabilizeConstraints")==0) return StabilizeConstraintsEnum; 214 213 else if (strcmp(name,"StokesReconditioning")==0) return StokesReconditioningEnum; 214 else if (strcmp(name,"SurfaceAccumulationRate")==0) return SurfaceAccumulationRateEnum; 215 else if (strcmp(name,"SurfaceAblationRate")==0) return SurfaceAblationRateEnum; 215 216 else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum; 216 217 else if (strcmp(name,"Surface")==0) return SurfaceEnum; 218 else if (strcmp(name,"SurfaceMassBalance")==0) return SurfaceMassBalanceEnum; 217 219 else if (strcmp(name,"SurfaceSlopeX")==0) return SurfaceSlopeXEnum; 218 220 else if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum; -
issm/trunk/src/c/objects/Elements/Penta.cpp
r8392 r8399 4007 4007 this->inputs->AddInput(new PentaVertexInput(BasalMeltingRateEnum,nodeinputs)); 4008 4008 } 4009 if (iomodel->accumulation_rate) { 4010 for(i=0;i<6;i++)nodeinputs[i]=iomodel->accumulation_rate[penta_vertex_ids[i]-1]/iomodel->yts; 4011 this->inputs->AddInput(new PentaVertexInput(AccumulationRateEnum,nodeinputs)); 4009 if (iomodel->surface_accumulation_rate) { 4010 for(i=0;i<6;i++)nodeinputs[i]=iomodel->surface_accumulation_rate[penta_vertex_ids[i]-1]/iomodel->yts; 4011 this->inputs->AddInput(new PentaVertexInput(SurfaceAccumulationRateEnum,nodeinputs)); 4012 } 4013 if (iomodel->surface_ablation_rate) { 4014 for(i=0;i<6;i++)nodeinputs[i]=iomodel->surface_ablation_rate[penta_vertex_ids[i]-1]/iomodel->yts; 4015 this->inputs->AddInput(new PentaVertexInput(SurfaceAblationRateEnum,nodeinputs)); 4016 } 4017 if (iomodel->surface_mass_balance) { 4018 for(i=0;i<6;i++)nodeinputs[i]=iomodel->surface_mass_balance[penta_vertex_ids[i]-1]/iomodel->yts; 4019 this->inputs->AddInput(new PentaVertexInput(SurfaceMassBalanceEnum,nodeinputs)); 4012 4020 } 4013 4021 if (iomodel->geothermalflux) { … … 5307 5315 name==SurfaceSlopeYEnum || 5308 5316 name==BasalMeltingRateEnum || 5309 name== AccumulationRateEnum ||5317 name==SurfaceMassBalanceEnum || 5310 5318 name==GeothermalFluxEnum || 5311 5319 name==SurfaceAreaEnum|| … … 6285 6293 6286 6294 if(step==0){ 6287 /*This is the first time we are trying to replace the accumulation penta vertex input by an accumulationpentav vertex6288 *forcing, which is essentially a penta vertex input that can vary with time. So fir t, if there is already6295 /*This is the first time we are trying to replace the smb penta vertex input by a smb pentav vertex 6296 *forcing, which is essentially a penta vertex input that can vary with time. So first, if there is already 6289 6297 an input with enum FieldEnum, squash it: */ 6290 6298 this->inputs->AddInput(new PentaVertexForcing(FieldEnum,nodeinputs,time,iomodel->forcing_numtimesteps,this->parameters)); -
issm/trunk/src/c/objects/Elements/Tria.cpp
r8392 r8399 1661 1661 int i,j,ig; 1662 1662 double xyz_list[NUMVERTICES][3]; 1663 double dhdt_g, melting_g,accumulation_g,Jdettria;1663 double dhdt_g,basal_melting_g,surface_mass_balance_g,Jdettria; 1664 1664 double L[NUMVERTICES]; 1665 1665 GaussTria* gauss=NULL; … … 1670 1670 /*Retrieve all inputs and parameters*/ 1671 1671 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES); 1672 Input* accumulation_input=inputs->GetInput(AccumulationRateEnum); _assert_(accumulation_input);1673 Input* melting_input=inputs->GetInput(BasalMeltingRateEnum); _assert_(melting_input);1672 Input* surface_mass_balance_input=inputs->GetInput(SurfaceMassBalanceEnum); _assert_(surface_mass_balance_input); 1673 Input* basal_melting_input=inputs->GetInput(BasalMeltingRateEnum); _assert_(basal_melting_input); 1674 1674 Input* dhdt_input=inputs->GetInput(DhDtEnum); _assert_(dhdt_input); 1675 1675 … … 1680 1680 gauss->GaussPoint(ig); 1681 1681 1682 accumulation_input->GetParameterValue(&accumulation_g,gauss);1683 melting_input->GetParameterValue(&melting_g,gauss);1682 surface_mass_balance_input->GetParameterValue(&surface_mass_balance_g,gauss); 1683 basal_melting_input->GetParameterValue(&basal_melting_g,gauss); 1684 1684 dhdt_input->GetParameterValue(&dhdt_g,gauss); 1685 1685 … … 1687 1687 GetL(&L[0], &xyz_list[0][0], gauss,NDOF1); 1688 1688 1689 for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*( accumulation_g-melting_g-dhdt_g)*L[i];1689 for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(surface_mass_balance_g-basal_melting_g-dhdt_g)*L[i]; 1690 1690 } 1691 1691 … … 1704 1704 int i,j,ig; 1705 1705 double xyz_list[NUMVERTICES][3]; 1706 double melting_g,accumulation_g,dhdt_g,Jdettria;1706 double basal_melting_g,surface_mass_balance_g,dhdt_g,Jdettria; 1707 1707 double L[NUMVERTICES]; 1708 1708 GaussTria* gauss=NULL; … … 1713 1713 /*Retrieve all inputs and parameters*/ 1714 1714 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES); 1715 Input* accumulation_input=inputs->GetInput(AccumulationRateEnum); _assert_(accumulation_input);1716 Input* melting_input=inputs->GetInput(BasalMeltingRateEnum); _assert_(melting_input);1715 Input* surface_mass_balance_input=inputs->GetInput(SurfaceMassBalanceEnum); _assert_(surface_mass_balance_input); 1716 Input* basal_melting_input=inputs->GetInput(BasalMeltingRateEnum); _assert_(basal_melting_input); 1717 1717 Input* dhdt_input=inputs->GetInput(DhDtEnum); _assert_(dhdt_input); 1718 1718 … … 1723 1723 gauss->GaussPoint(ig); 1724 1724 1725 accumulation_input->GetParameterValue(&accumulation_g,gauss);1726 melting_input->GetParameterValue(&melting_g,gauss);1725 surface_mass_balance_input->GetParameterValue(&surface_mass_balance_g,gauss); 1726 basal_melting_input->GetParameterValue(&basal_melting_g,gauss); 1727 1727 dhdt_input->GetParameterValue(&dhdt_g,gauss); 1728 1728 … … 1730 1730 GetL(&L[0], &xyz_list[0][0], gauss,NDOF1); 1731 1731 1732 for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*( accumulation_g-melting_g-dhdt_g)*L[i];1732 for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(surface_mass_balance_g-basal_melting_g-dhdt_g)*L[i]; 1733 1733 } 1734 1734 … … 1747 1747 int i,j,ig; 1748 1748 double xyz_list[NUMVERTICES][3]; 1749 double Jdettria, accumulation_g,melting_g;1749 double Jdettria,surface_mass_balance_g,basal_melting_g; 1750 1750 double L[NUMVERTICES]; 1751 1751 GaussTria* gauss=NULL; … … 1756 1756 /*Retrieve all inputs and parameters*/ 1757 1757 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES); 1758 Input* accumulation_input=inputs->GetInput(AccumulationRateEnum); _assert_(accumulation_input);1759 Input* melting_input=inputs->GetInput(BasalMeltingRateEnum); _assert_(melting_input);1758 Input* surface_mass_balance_input=inputs->GetInput(SurfaceMassBalanceEnum); _assert_(surface_mass_balance_input); 1759 Input* basal_melting_input=inputs->GetInput(BasalMeltingRateEnum); _assert_(basal_melting_input); 1760 1760 1761 1761 /* Start looping on the number of gaussian points: */ … … 1768 1768 GetL(&L[0], &xyz_list[0][0], gauss,NDOF1); 1769 1769 1770 accumulation_input->GetParameterValue(&accumulation_g,gauss);1771 melting_input->GetParameterValue(&melting_g,gauss);1772 1773 for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*( accumulation_g-melting_g)*L[i];1770 surface_mass_balance_input->GetParameterValue(&surface_mass_balance_g,gauss); 1771 basal_melting_input->GetParameterValue(&basal_melting_g,gauss); 1772 1773 for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(surface_mass_balance_g-basal_melting_g)*L[i]; 1774 1774 } 1775 1775 … … 1790 1790 double xyz_list[NUMVERTICES][3]; 1791 1791 double Jdet; 1792 double vx,vy,vz,dbdx,dbdy, meltingvalue;1792 double vx,vy,vz,dbdx,dbdy,basalmeltingvalue; 1793 1793 double slope[2]; 1794 1794 double L[NUMVERTICES]; … … 1802 1802 inputs->GetParameterValue(&approximation,ApproximationEnum); 1803 1803 Input* bed_input=inputs->GetInput(BedEnum); _assert_(bed_input); 1804 Input* melting_input=inputs->GetInput(BasalMeltingRateEnum); _assert_(melting_input);1804 Input* basal_melting_input=inputs->GetInput(BasalMeltingRateEnum); _assert_(basal_melting_input); 1805 1805 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 1806 1806 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); … … 1816 1816 gauss->GaussPoint(ig); 1817 1817 1818 melting_input->GetParameterValue(&meltingvalue, gauss);1818 basal_melting_input->GetParameterValue(&basalmeltingvalue, gauss); 1819 1819 bed_input->GetParameterDerivativeValue(&slope[0],&xyz_list[0][0],gauss); 1820 1820 vx_input->GetParameterValue(&vx, gauss); … … 1831 1831 GetL(&L[0], &xyz_list[0][0], gauss,NDOF1); 1832 1832 1833 for(i=0;i<numdof;i++) pe->values[i]+=-Jdet*gauss->weight*(vx*dbdx+vy*dbdy-vz- meltingvalue)*L[i];1833 for(i=0;i<numdof;i++) pe->values[i]+=-Jdet*gauss->weight*(vx*dbdx+vy*dbdy-vz-basalmeltingvalue)*L[i]; 1834 1834 } 1835 1835 … … 2389 2389 int i,j,ig; 2390 2390 double Jdettria,dt; 2391 double melting_g;2391 double basal_melting_g; 2392 2392 double old_watercolumn_g; 2393 2393 double xyz_list[NUMVERTICES][3]; … … 2401 2401 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES); 2402 2402 this->parameters->FindParam(&dt,DtEnum); 2403 Input* melting_input=inputs->GetInput(BasalMeltingRateEnum); _assert_(melting_input);2403 Input* basal_melting_input=inputs->GetInput(BasalMeltingRateEnum); _assert_(basal_melting_input); 2404 2404 Input* old_watercolumn_input=inputs->GetInput(WaterColumnOldEnum);_assert_(old_watercolumn_input); 2405 2405 2406 /*Initialize melting_correction_g to 0, do not forget!:*/2406 /*Initialize basal_melting_correction_g to 0, do not forget!:*/ 2407 2407 /* Start looping on the number of gaussian points: */ 2408 2408 gauss=new GaussTria(2); … … 2414 2414 GetL(&L[0], &xyz_list[0][0], gauss,NDOF1); 2415 2415 2416 melting_input->GetParameterValue(&melting_g,gauss);2416 basal_melting_input->GetParameterValue(&basal_melting_g,gauss); 2417 2417 old_watercolumn_input->GetParameterValue(&old_watercolumn_g,gauss); 2418 2418 2419 if(dt)for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(old_watercolumn_g+dt* melting_g)*L[i];2420 else for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight* melting_g*L[i];2419 if(dt)for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(old_watercolumn_g+dt*basal_melting_g)*L[i]; 2420 else for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*basal_melting_g*L[i]; 2421 2421 } 2422 2422 … … 2435 2435 int i,j,ig; 2436 2436 double Jdettria,dt; 2437 double accumulation_g,melting_g,melting_correction_g,thickness_g;2437 double surface_mass_balance_g,basal_melting_g,basal_melting_correction_g,thickness_g; 2438 2438 double xyz_list[NUMVERTICES][3]; 2439 2439 double L[NUMVERTICES]; … … 2446 2446 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES); 2447 2447 this->parameters->FindParam(&dt,DtEnum); 2448 Input* accumulation_input=inputs->GetInput(AccumulationRateEnum); _assert_(accumulation_input);2449 Input* melting_input=inputs->GetInput(BasalMeltingRateEnum); _assert_(melting_input);2450 Input* melting_correction_input=inputs->GetInput(BasalMeltingRateCorrectionEnum);2448 Input* surface_mass_balance_input=inputs->GetInput(SurfaceMassBalanceEnum); _assert_(surface_mass_balance_input); 2449 Input* basal_melting_input=inputs->GetInput(BasalMeltingRateEnum); _assert_(basal_melting_input); 2450 Input* basal_melting_correction_input=inputs->GetInput(BasalMeltingRateCorrectionEnum); 2451 2451 Input* thickness_input=inputs->GetInput(ThicknessEnum); _assert_(thickness_input); 2452 2452 2453 /*Initialize melting_correction_g to 0, do not forget!:*/2453 /*Initialize basal_melting_correction_g to 0, do not forget!:*/ 2454 2454 /* Start looping on the number of gaussian points: */ 2455 2455 gauss=new GaussTria(2); … … 2461 2461 GetL(&L[0], &xyz_list[0][0], gauss,NDOF1); 2462 2462 2463 accumulation_input->GetParameterValue(&accumulation_g,gauss);2464 melting_input->GetParameterValue(&melting_g,gauss);2463 surface_mass_balance_input->GetParameterValue(&surface_mass_balance_g,gauss); 2464 basal_melting_input->GetParameterValue(&basal_melting_g,gauss); 2465 2465 thickness_input->GetParameterValue(&thickness_g,gauss); 2466 if( melting_correction_input) melting_correction_input->GetParameterValue(&melting_correction_g,gauss);2467 2468 for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(thickness_g+dt*( accumulation_g-melting_g-melting_correction_g))*L[i];2466 if(basal_melting_correction_input) basal_melting_correction_input->GetParameterValue(&basal_melting_correction_g,gauss); 2467 2468 for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(thickness_g+dt*(surface_mass_balance_g-basal_melting_g-basal_melting_correction_g))*L[i]; 2469 2469 } 2470 2470 … … 2483 2483 int i,j,ig; 2484 2484 double Jdettria,dt; 2485 double accumulation_g,melting_g,thickness_g;2485 double surface_mass_balance_g,basal_melting_g,thickness_g; 2486 2486 double xyz_list[NUMVERTICES][3]; 2487 2487 double L[NUMVERTICES]; … … 2494 2494 this->parameters->FindParam(&dt,DtEnum); 2495 2495 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES); 2496 Input* accumulation_input=inputs->GetInput(AccumulationRateEnum); _assert_(accumulation_input);2497 Input* melting_input=inputs->GetInput(BasalMeltingRateEnum); _assert_(melting_input);2496 Input* surface_mass_balance_input=inputs->GetInput(SurfaceMassBalanceEnum); _assert_(surface_mass_balance_input); 2497 Input* basal_melting_input=inputs->GetInput(BasalMeltingRateEnum); _assert_(basal_melting_input); 2498 2498 Input* thickness_input=inputs->GetInput(ThicknessEnum); _assert_(thickness_input); 2499 2499 … … 2507 2507 GetL(&L[0], &xyz_list[0][0], gauss,NDOF1); 2508 2508 2509 accumulation_input->GetParameterValue(&accumulation_g,gauss);2510 melting_input->GetParameterValue(&melting_g,gauss);2509 surface_mass_balance_input->GetParameterValue(&surface_mass_balance_g,gauss); 2510 basal_melting_input->GetParameterValue(&basal_melting_g,gauss); 2511 2511 thickness_input->GetParameterValue(&thickness_g,gauss); 2512 2512 2513 for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(thickness_g+dt*( accumulation_g-melting_g))*L[i];2513 for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(thickness_g+dt*(surface_mass_balance_g-basal_melting_g))*L[i]; 2514 2514 } 2515 2515 … … 3885 3885 this->inputs->AddInput(new TriaVertexInput(WaterColumnOldEnum,nodeinputs)); 3886 3886 } 3887 3888 if (iomodel->accumulation_rate) { 3889 for(i=0;i<3;i++)nodeinputs[i]=iomodel->accumulation_rate[tria_vertex_ids[i]-1]/iomodel->yts; 3890 this->inputs->AddInput(new TriaVertexInput(AccumulationRateEnum,nodeinputs)); 3887 if (iomodel->surface_accumulation_rate) { 3888 for(i=0;i<3;i++)nodeinputs[i]=iomodel->surface_accumulation_rate[tria_vertex_ids[i]-1]/iomodel->yts; 3889 this->inputs->AddInput(new TriaVertexInput(SurfaceAccumulationRateEnum,nodeinputs)); 3890 } 3891 if (iomodel->surface_ablation_rate) { 3892 for(i=0;i<3;i++)nodeinputs[i]=iomodel->surface_ablation_rate[tria_vertex_ids[i]-1]/iomodel->yts; 3893 this->inputs->AddInput(new TriaVertexInput(SurfaceAblationRateEnum,nodeinputs)); 3894 } 3895 if (iomodel->surface_mass_balance) { 3896 for(i=0;i<3;i++)nodeinputs[i]=iomodel->surface_mass_balance[tria_vertex_ids[i]-1]/iomodel->yts; 3897 this->inputs->AddInput(new TriaVertexInput(SurfaceMassBalanceEnum,nodeinputs)); 3891 3898 } 3892 3899 if (iomodel->geothermalflux) { … … 4530 4537 name==BasalMeltingRateEnum || 4531 4538 name==WaterColumnEnum || 4532 name== AccumulationRateEnum ||4539 name==SurfaceMassBalanceEnum || 4533 4540 name==SurfaceAreaEnum|| 4534 4541 name==VxEnum || … … 5146 5153 this->inputs->AddInput(new BoolInput(ElementOnIceShelfEnum,elementonshelf)); 5147 5154 5148 /*If this element just became ungrounded, set its melting rate at 50 m/yr:*/5155 /*If this element just became ungrounded, set its basal melting rate at 50 m/yr:*/ 5149 5156 if(swap){ 5150 5157 Input* basal_melting_rate_input =inputs->GetInput(BasalMeltingRateEnum); _assert_(basal_melting_rate_input); … … 5886 5893 5887 5894 if(step==0){ 5888 /*This is the first time we are trying to replace the accumulation tria vertex input by an accumulationtriav vertex5889 *forcing, which is essentially a tria vertex input that can vary with time. So fir t, if there is already5895 /*This is the first time we are trying to replace the smb tria vertex input by a smb triav vertex 5896 *forcing, which is essentially a tria vertex input that can vary with time. So first, if there is already 5890 5897 an input with enum FieldEnum, squash it: */ 5891 5898 this->inputs->AddInput(new TriaVertexForcing(FieldEnum,nodeinputs,time,iomodel->forcing_numtimesteps,this->parameters)); -
issm/trunk/src/c/objects/IoModel.cpp
r8392 r8399 88 88 xfree((void**)&this->watercolumn); 89 89 xfree((void**)&this->basal_melting_rate_correction); 90 xfree((void**)&this->accumulation_rate); 90 xfree((void**)&this->surface_accumulation_rate); 91 xfree((void**)&this->surface_ablation_rate); 92 xfree((void**)&this->surface_mass_balance); 91 93 xfree((void**)&this->forcingtypes); 92 94 xfree((void**)&this->forcing); … … 398 400 this->penalties=NULL; 399 401 400 /*!basal: */ 401 this->accumulation_rate=NULL; 402 /*!surface: */ 403 this->surface_mass_balance=NULL; 404 this->surface_accumulation_rate=NULL; 405 this->surface_ablation_rate=NULL; 402 406 this->dhdt=NULL; 403 407 -
issm/trunk/src/c/objects/IoModel.h
r8392 r8399 194 194 double* basal_melting_rate_correction; 195 195 int basal_melting_rate_correction_apply; 196 double* accumulation_rate; 196 double* surface_mass_balance; 197 double* surface_accumulation_rate; 198 double* surface_ablation_rate; 199 197 200 double* dhdt; 198 201 -
issm/trunk/src/c/shared/Numerics/UnitConversion.cpp
r8392 r8399 68 68 case VelObsEnum: scale=yts;break; //m/yr 69 69 case DhDtEnum: scale=yts;break; //m/yr 70 case BasalMeltingRateEnum: scale=yts;break; //m/yr 71 case AccumulationRateEnum: scale=yts;break; //m/yr 70 case BasalMeltingRateEnum: scale=yts;break; //m/yr 71 case SurfaceAccumulationRateEnum: scale=yts;break; //m/yr 72 case SurfaceAblationRateEnum: scale=yts;break; //m/yr 73 case SurfaceMassBalanceEnum: scale=yts;break; //m/yr 72 74 case MisfitEnum: scale=pow(yts,2);break; //(m/yr)^2 73 75 case MassFluxEnum: scale=pow(10,-12)*yts;break; // (GigaTon/year) -
issm/trunk/src/c/solutions/transient2d_core.cpp
r8392 r8399 86 86 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceEnum,step,time); 87 87 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BedEnum,step,time); 88 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters, AccumulationRateEnum,step,time);88 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceMassBalanceEnum,step,time); 89 89 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BasalMeltingRateEnum,step,time); 90 90 if(gl_migration!=NoneEnum)InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ElementOnIceShelfEnum,step,time); -
issm/trunk/src/m/classes/model.m
r8392 r8399 176 176 vel_bal=NaN; 177 177 vel_obs_raw=NaN; 178 accumulation_rate=NaN; 178 surface_accumulation_rate=NaN; 179 surface_ablation_rate=NaN; 180 surface_mass_balance=NaN; 179 181 dhdt=NaN; 180 182 geothermalflux=NaN; … … 373 375 n; 374 376 melting; 377 melting_rate; 378 accumulation_rate; 375 379 accumulation; 376 380 type; … … 426 430 if isfield(structmd,'n'), md.rheology_n=structmd.n; end 427 431 if isfield(structmd,'melting'), md.basal_melting_rate=structmd.melting; end 428 if isfield(structmd,'accumulation'), md.accumulation_rate=structmd.accumulation; end 432 if isfield(structmd,'melting_rate'), md.basal_melting_rate=structmd.melting_rate; end 433 if isfield(structmd,'accumulation'), md.surface_mass_balance=structmd.accumulation; end 434 if isfield(structmd,'accumulation_rate'), md.surface_mass_balance=structmd.accumulation_rate; end 429 435 if isfield(structmd,'numberofgrids'), md.numberofnodes=structmd.numberofgrids; end 430 436 if isfield(structmd,'numberofgrids2d'), md.numberofnodes2d=structmd.numberofgrids2d; end -
issm/trunk/src/m/enum/EnumToModelField.m
r8392 r8399 21 21 case VyObsEnum(), string='vy_obs'; return 22 22 case GroundingLineMigrationEnum(), string='gl_migration'; return 23 case AccumulationRateEnum(), string='accumulation_rate'; return24 23 case BasalMeltingRateEnum(), string='basal_melting_rate'; return 24 case SurfaceAccumulationRateEnum(), string='surface_accumulation_rate'; return 25 case SurfaceAblationRateEnum(), string='surface_ablation_rate'; return 26 case SurfaceMassBalanceEnum(), string='surface_mass_balance'; return 25 27 otherwise, error(['Enum ' num2str(enum) ' not found associated to any model field']); 26 28 -
issm/trunk/src/m/model/collapse.m
r8392 r8399 29 29 if ~isnan(md.vy_obs), md.vy_obs=project2d(md,md.vy_obs,md.numlayers); end; 30 30 if ~isnan(md.vel_obs), md.vel_obs=project2d(md,md.vel_obs,md.numlayers); end; 31 if ~isnan(md. accumulation_rate), md.accumulation_rate=project2d(md,md.accumulation_rate,md.numlayers); end;31 if ~isnan(md.surface_mass_balance), md.surface_mass_balance=project2d(md,md.surface_mass_balance,md.numlayers); end; 32 32 if ~isnan(md.dhdt), md.dhdt=project2d(md,md.dhdt,md.numlayers); end; 33 33 if ~isnan(md.firn_layer), md.firn_layer=project2d(md,md.firn_layer,md.numlayers); end; -
issm/trunk/src/m/model/display/displayobservations.m
r3763 r8399 17 17 fielddisplay(md,'vy_obs_raw','raw observed velocity y component [m/a]'); 18 18 fielddisplay(md,'vel_obs_raw','raw observed magnitude [m/a]'); 19 fielddisplay(md,' accumulation_rate','surface accumulation rate [m/a]');19 fielddisplay(md,'surface_mass_balance','surface mass balance [m/a]'); 20 20 fielddisplay(md,'dhdt','surface dhdt rate [m/a]'); 21 21 fielddisplay(md,'observed_temperature','observed temperature [K]'); -
issm/trunk/src/m/model/extrude.m
r8392 r8399 150 150 md.vel_bal=project3d(md,md.vel_bal,'node'); 151 151 md.vel_obs_raw=project3d(md,md.vel_obs_raw,'node'); 152 md. accumulation_rate=project3d(md,md.accumulation_rate,'node');152 md.surface_mass_balance=project3d(md,md.surface_mass_balance,'node'); 153 153 md.dhdt=project3d(md,md.dhdt,'node'); 154 154 md.firn_layer=project3d(md,md.firn_layer,'node',md.numlayers); -
issm/trunk/src/m/model/ismodelselfconsistent.m
r8392 r8399 92 92 %}}} 93 93 %SIZE NUMBEROFNODES {{{1 94 fields={'x','y','z','rheology_B','drag_coefficient','basal_melting_rate',' accumulation_rate','surface','thickness','bed','nodeonbed','nodeonsurface'};94 fields={'x','y','z','rheology_B','drag_coefficient','basal_melting_rate','surface_mass_balance','surface','thickness','bed','nodeonbed','nodeonsurface'}; 95 95 checksize(md,fields,[md.numberofnodes 1]); 96 96 %}}} … … 505 505 506 506 %INITIAL TEMPERATURE, MELTING AND ACCUMULATION 507 fields={'temperature',' accumulation_rate','basal_melting_rate'};507 fields={'temperature','surface_mass_balance','basal_melting_rate'}; 508 508 checksize(md,fields,[md.numberofnodes 1]); 509 509 checknan(md,fields); … … 521 521 % {{{2 522 522 %VELOCITIES MELTING AND ACCUMULATION 523 fields={'vx','vy',' accumulation_rate','basal_melting_rate','dhdt'};523 fields={'vx','vy','surface_mass_balance','basal_melting_rate','dhdt'}; 524 524 checksize(md,fields,[md.numberofnodes 1]); 525 525 checknan(md,fields); … … 540 540 % {{{2 541 541 %VELOCITIES MELTING AND ACCUMULATION 542 fields={'vx','vy',' accumulation_rate','basal_melting_rate'};542 fields={'vx','vy','surface_mass_balance','basal_melting_rate'}; 543 543 checksize(md,fields,[md.numberofnodes 1]); 544 544 checknan(md,fields); -
issm/trunk/src/m/model/marshall.m
r8392 r8399 89 89 90 90 WriteData(fid,md.geothermalflux,'Mat','geothermalflux'); 91 WriteData(fid,md.accumulation_rate,'Mat','accumulation_rate'); 91 WriteData(fid,md.surface_accumulation_rate,'Mat','surface_accumulation_rate'); 92 WriteData(fid,md.surface_ablation_rate,'Mat','surface_ablation_rate'); 93 WriteData(fid,md.surface_mass_balance,'Mat','surface_mass_balance'); 92 94 WriteData(fid,md.gl_melting_rate,'Scalar','gl_melting_rate'); 93 95 WriteData(fid,md.basal_melting_rate,'Mat','basal_melting_rate'); … … 101 103 for i=1:numforcings, 102 104 switch (forcingnames{i}) 103 case 'accumulation_rate' 104 forcingtypes(i)=AccumulationRateEnum; 105 case 'surface_accumulation_rate' 106 forcingtypes(i)=SurfaceAccumulationRateEnum; 107 case 'surface_ablation_rate' 108 forcingtypes(i)=SurfaceAblationRateEnum; 109 case 'surface_mass_balance' 110 forcingtypes(i)=SurfaceMassBalanceEnum; 105 111 case 'basal_melting_rate' 106 112 forcingtypes(i)=BasalMeltingRateEnum; -
issm/trunk/src/m/model/modeldefault/defaultparams.m
r8392 r8399 88 88 %end 89 89 90 disp(' creating accumulation rates'); 91 md.accumulation_rate=ones(md.numberofnodes,1); %1m/a 92 90 disp(' creating surface balance rates'); 91 md.surface_accumulation_rate=ones(md.numberofnodes,1); %1m/a 92 md.surface_ablation_rate=ones(md.numberofnodes,0); %0m/a 93 md.surface_mass_balance=ones(md.numberofnodes,1); %1m/a 94 93 95 %Deal with boundary conditions: 94 96 -
issm/trunk/src/m/model/structtomodel.m
r8392 r8399 26 26 if isfield(structmd,'n'), md.rheology_n=structmd.n; end 27 27 if isfield(structmd,'melting'), md.basal_melting_rate=structmd.melting; end 28 if isfield(structmd,'accumulation'), md.accumulation_rate=structmd.accumulation; end 28 if isfield(structmd,'melting_rate'), md.basal_melting_rate=structmd.melting_rate; end 29 if isfield(structmd,'accumulation'), md.surface_mass_balance=structmd.accumulation; end 30 if isfield(structmd,'accumulation_rate'), md.surface_mass_balance=structmd.accumulation_rate; end 29 31 if isfield(structmd,'numberofgrids'), md.numberofnodes=structmd.numberofgrids; end 30 32 if isfield(structmd,'numberofgrids2d'), md.numberofnodes2d=structmd.numberofgrids2d; end -
issm/trunk/src/m/utils/BC/SetIceSheetBC.m
r8392 r8399 28 28 end 29 29 30 %Create zeros basal_melting_rate and accumulation_rate if not specified 31 if isnan(md.accumulation_rate), 32 md.accumulation_rate=zeros(md.numberofnodes,1); 33 md.forcings.accumulation_rate=[zeros(md.numberofnodes+1,1)]; 34 disp(' no accumulation_rate specified: values set as zero'); 30 %Create zeros basal_melting_rate and surface mass balance if not specified 31 if isnan(md.surface_accumulation_rate), 32 md.surface_accumulation_rate=zeros(md.numberofnodes,1); 33 md.forcings.surface_accumulation_rate=zeros(md.numberofnodes+1,1); 34 disp(' no surface_accumulation_rate specified: values set as zero'); 35 end 36 if isnan(md.surface_ablation_rate), 37 md.surface_ablation_rate=zeros(md.numberofnodes,1); 38 md.forcings.surface_ablation_rate=zeros(md.numberofnodes+1,1); 39 disp(' no surface_ablation_rate specified: values set as zero'); 40 end 41 if isnan(md.surface_mass_balance), 42 md.surface_mass_balance=zeros(md.numberofnodes,1); 43 md.forcings.surface_mass_balance=zeros(md.numberofnodes+1,1); 44 disp(' no surface_mass_balance specified: values set as zero'); 35 45 end 36 46 if isnan(md.basal_melting_rate), -
issm/trunk/src/m/utils/BC/SetIceShelfBC.m
r8392 r8399 59 59 md.pressureload=pressureload; 60 60 61 %Create zeros basal_melting_rate and accumulation_rate if not specified 62 if isnan(md.accumulation_rate), 63 md.accumulation_rate=zeros(md.numberofnodes,1); 64 md.forcings.accumulation_rate=zeros(md.numberofnodes+1,1); 65 disp(' no accumulation_rate specified: values set as zero'); 61 %Create zeros basal_melting_rate, surface_ablation_rate, surface_accumulation_rate 62 % and surface_mass_balance if not specified 63 if isnan(md.surface_accumulation_rate), 64 md.surface_accumulation_rate=zeros(md.numberofnodes,1); 65 md.forcings.surface_accumulation_rate=zeros(md.numberofnodes+1,1); 66 disp(' no surface_accumulation_rate specified: values set as zero'); 67 end 68 if isnan(md.surface_ablation_rate), 69 md.surface_ablation_rate=zeros(md.numberofnodes,1); 70 md.forcings.surface_ablation_rate=zeros(md.numberofnodes+1,1); 71 disp(' no surface_ablation_rate specified: values set as zero'); 72 end 73 if isnan(md.surface_mass_balance), 74 md.surface_mass_balance=zeros(md.numberofnodes,1); 75 md.forcings.surface_mass_balance=zeros(md.numberofnodes+1,1); 76 disp(' no surface_mass_balance specified: values set as zero'); 66 77 end 67 78 if isnan(md.basal_melting_rate), -
issm/trunk/src/m/utils/BC/SetMarineIceSheetBC.m
r8392 r8399 69 69 md.pressureload=pressureload; 70 70 71 %Create zeros basal_melting_rate and accumulation_rate if not specified 72 if isnan(md.accumulation_rate), 73 md.accumulation_rate=zeros(md.numberofnodes,1); 74 md.forcings.accumulation_rate=zeros(md.numberofnodes+1,1); 75 disp(' no accumulation_rate specified: values set as zero'); 71 72 %Create zeros basal_melting_rate, surface_ablation_rate, surface_accumulation_rate 73 % and surface_mass_balance if not specified 74 if isnan(md.surface_accumulation_rate), 75 md.surface_accumulation_rate=zeros(md.numberofnodes,1); 76 md.forcings.surface_accumulation_rate=zeros(md.numberofnodes+1,1); 77 disp(' no surface_accumulation_rate specified: values set as zero'); 78 end 79 if isnan(md.surface_ablation_rate), 80 md.surface_ablation_rate=zeros(md.numberofnodes,1); 81 md.forcings.surface_ablation_rate=zeros(md.numberofnodes+1,1); 82 disp(' no surface_ablation_rate specified: values set as zero'); 83 end 84 if isnan(md.surface_mass_balance), 85 md.surface_mass_balance=zeros(md.numberofnodes,1); 86 md.forcings.surface_mass_balance=zeros(md.numberofnodes+1,1); 87 disp(' no surface_mass_balance specified: values set as zero'); 76 88 end 77 89 if isnan(md.basal_melting_rate), -
issm/trunk/test/Par/79North.par
r8392 r8399 23 23 md.drag_q=ones(md.numberofelements,1); 24 24 25 %Ice shelf melting and accumulation25 %Ice shelf melting and surface mass balance 26 26 md.basal_melting_rate=zeros(md.numberofnodes,1); 27 27 pos=zeros(md.numberofnodes,1); 28 28 pos(md.elements(find(md.elementoniceshelf),:))=1; 29 29 md.basal_melting_rate(find(pos))=10; 30 md. accumulation_rate=15*ones(md.numberofnodes,1);31 md.forcings. accumulation_rate=[15*ones(md.numberofnodes,1);1];30 md.surface_mass_balance=15*ones(md.numberofnodes,1); 31 md.forcings.surface_mass_balance=[15*ones(md.numberofnodes,1);1]; 32 32 33 33 %Numerical parameters -
issm/trunk/test/Par/RoundSheetEISMINT.par
r8368 r8399 23 23 md.rheology_n=3*ones(md.numberofelements,1); 24 24 25 disp(' creating accumulation rates');26 acc_max=0.5; %m/yr25 disp(' creating surface mass balance'); 26 smb_max=0.5; %m/yr 27 27 sb=10^-2/1000; %m/yr/m 28 28 rel=450*1000; %m 29 md. accumulation_rate=min(acc_max,sb*(rel-radius));30 md.forcings. accumulation_rate=[min(acc_max,sb*(rel-radius));1];29 md.surface_mass_balance=min(smb_max,sb*(rel-radius)); 30 md.forcings.surface_mass_balance=[min(smb_max,sb*(rel-radius));1]; 31 31 32 32 disp(' creating velocities'); -
issm/trunk/test/Par/RoundSheetShelf.par
r8392 r8399 45 45 md.temperature=md.observed_temperature; 46 46 47 % Accumulation andmelting48 md. accumulation_rate=-10*ones(md.numberofnodes,1);49 md.forcings. accumulation_rate=[-10*ones(md.numberofnodes,1);1];47 %Surface mass balance and basal melting 48 md.surface_mass_balance=-10*ones(md.numberofnodes,1); 49 md.forcings.surface_mass_balance=[-10*ones(md.numberofnodes,1);1]; 50 50 md.basal_melting_rate=zeros(md.numberofnodes,1); 51 51 pos=find(md.nodeoniceshelf);md.basal_melting_rate(pos)=10; -
issm/trunk/test/Par/RoundSheetStaticEISMINT.par
r8368 r8399 29 29 md.rheology_n=3*ones(md.numberofelements,1); 30 30 31 disp(' creating accumulation rates');32 acc_max=0.5; %m/yr31 disp(' creating surface mass balance'); 32 smb_max=0.5; %m/yr 33 33 sb=10^-2/1000; %m/yr/m 34 34 rel=450*1000; %m 35 md. accumulation_rate=min(acc_max,sb*(rel-radius));36 md.forcings. accumulation_rate=[min(acc_max,sb*(rel-radius));1];35 md.surface_mass_balance=min(smb_max,sb*(rel-radius)); 36 md.forcings.surface_mass_balance=[min(smb_max,sb*(rel-radius));1]; 37 37 38 38 disp(' creating velocities'); -
issm/trunk/test/Par/SquareEISMINT.par
r8392 r8399 26 26 md.rheology_n=3*ones(md.numberofelements,1); 27 27 28 disp(' creating accumulation rates');29 md. accumulation_rate=0.2*ones(md.numberofnodes,1); %0m/a30 md.forcings. accumulation_rate=[0.2*ones(md.numberofnodes,1);1]; %0m/a28 disp(' creating surface mass balance'); 29 md.surface_mass_balance=0.2*ones(md.numberofnodes,1); %0m/a 30 md.forcings.surface_mass_balance=[0.2*ones(md.numberofnodes,1);1]; %0m/a 31 31 md.basal_melting_rate=0*ones(md.numberofnodes,1); %0m/a 32 32 -
issm/trunk/test/Par/SquareSheetShelf.par
r8392 r8399 28 28 29 29 %Accumulation and melting 30 md. accumulation_rate=10*ones(md.numberofnodes,1);31 md.forcings. accumulation_rate=[10*ones(md.numberofnodes,1);1];30 md.surface_mass_balance=10*ones(md.numberofnodes,1); 31 md.forcings.surface_mass_balance=[10*ones(md.numberofnodes,1);1]; 32 32 md.basal_melting_rate=5*ones(md.numberofnodes,1); 33 33 -
issm/trunk/test/Par/SquareShelfConstrained.par
r8392 r8399 24 24 md.temperature=md.observed_temperature; 25 25 26 % Accumulation andmelting27 md. accumulation_rate=10*ones(md.numberofnodes,1);28 md.forcings. accumulation_rate=[10*ones(md.numberofnodes,1);1];26 %Surface mass balance and basal melting 27 md.surface_mass_balance=10*ones(md.numberofnodes,1); 28 md.forcings.surface_mass_balance=[10*ones(md.numberofnodes,1);1]; 29 29 md.basal_melting_rate=5*ones(md.numberofnodes,1); 30 30 -
issm/trunk/test/Par/SquareThermal.par
r8392 r8399 33 33 md.rheology_n=3*ones(md.numberofelements,1); 34 34 35 disp(' creating accumulation rates');36 md. accumulation_rate=ones(md.numberofnodes,1)/md.yts; %1m/a37 md.forcings. accumulation_rate=[ones(md.numberofnodes,1)/md.yts;1]; %1m/a35 disp(' creating surface_mass_balance'); 36 md.surface_mass_balance=ones(md.numberofnodes,1)/md.yts; %1m/a 37 md.forcings.surface_mass_balance=[ones(md.numberofnodes,1)/md.yts;1]; %1m/a 38 38 md.basal_melting_rate=0*ones(md.numberofnodes,1)/md.yts; %1m/a 39 39
Note:
See TracChangeset
for help on using the changeset viewer.