Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp =================================================================== --- ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 24971) +++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 24972) @@ -5930,14 +5930,14 @@ /*diverse:*/ int gsize,dummy; - IssmDouble S; //change in water water level(Farrel and Clarke, Equ. 4) + IssmDouble S,BP, Stotal; //change in water water level(Farrel and Clarke, Equ. 4) IssmDouble constant=0; IssmDouble rho_water; IssmDouble* G=NULL; + int bp_compute_fingerprints= 0; - /*optimization:*/ - bool store_green_functions=false; - + /*retrieve parameters:*/ + this->parameters->FindParam(&bp_compute_fingerprints,DslComputeFingerprintsEnum); rho_water=FindParam(MaterialsRhoSeawaterEnum); /*early return if we are not on the ocean:*/ @@ -5962,12 +5962,22 @@ /*From Sg_old, recover water sea level rise:*/ S=0; for(int i=0;ivertices[i]->Sid()]/NUMVERTICES; + /*If we have bottom pressure fingerprinting requested, retrieve BP: */ + if(bp_compute_fingerprints){ + Input2* bottompressure_change_input=this->GetInput2(DslSeaWaterPressureChangeAtSeaFloor); + if (!bottompressure_change_input)_error_("bottom pressure input needed to compute sea level rise fingerprint!"); + bottompressure_change_input->GetInputAverage(&BP); + + } else BP=0; + /*convert to kg/m^2: */ S=S*rho_water; + BP=BP*rho_water; - for(int i=0;iparameters->FindParam(&computeelastic,SealevelriseElasticEnum); this->parameters->FindParam(&horiz,SealevelriseHorizEnum); + this->parameters->FindParam(&bp_compute_fingerprints,DslComputeFingerprintsEnum); /*early return if elastic not requested:*/ if(!computeelastic) return; @@ -6018,11 +6030,14 @@ if (!deltathickness_input)_error_("delta thickness input needed to compute sea level rise!"); deltathickness_input->GetInputAverage(&I); + /*convert to kg/m^2*/ + I=I*rho_ice; + for(int i=0;ivertices[i]->Sid()]/NUMVERTICES; + /*If we have bottom pressure fingerprinting requested, retrieve BP: */ + if(bp_compute_fingerprints){ + Input2* bottompressure_change_input=this->GetInput2(DslSeaWaterPressureChangeAtSeaFloor); + if (!bottompressure_change_input)_error_("bottom pressure input needed to compute sea level rise fingerprint!"); + bottompressure_change_input->GetInputAverage(&BP); + } else BP=0; + + /*convert to kg/m^2:*/ + S=rho_water*S; + BP=rho_water*BP; + Stotal=S+BP; + for(int i=0;i