Changeset 23885


Ignore:
Timestamp:
04/22/19 15:19:50 (6 years ago)
Author:
Mathieu Morlighem
Message:

CHG: working on Massflux at ice front

Location:
issm/trunk-jpl/src/c
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Elements/Element.h

    r23795 r23885  
    240240                virtual IssmDouble IceVolume(bool scaled)=0;
    241241                virtual IssmDouble IceVolumeAboveFloatation(bool scaled)=0;
     242                virtual IssmDouble IcefrontMassFlux(bool scaled){_error_("not implemented");};
    242243                virtual void       InputDepthAverageAtBase(int enum_type,int average_enum_type)=0;
    243244                virtual void       InputExtrude(int input_enum,int start)=0;
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r23867 r23885  
    15301530       
    15311531}/*}}}*/
     1532void FemModel::IcefrontMassFluxx(IssmDouble* pM, bool scaled){/*{{{*/
     1533
     1534        IssmDouble local_mass_flux = 0;
     1535        IssmDouble total_mass_flux;
     1536
     1537        for(int i=0;i<this->elements->Size();i++){
     1538                Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
     1539                local_mass_flux+=element->IcefrontMassFlux(scaled);
     1540        }
     1541        ISSM_MPI_Reduce(&local_mass_flux,&total_mass_flux,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
     1542        ISSM_MPI_Bcast(&total_mass_flux,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
     1543
     1544        /*Assign output pointers: */
     1545        *pM=total_mass_flux;
     1546
     1547}/*}}}*/
    15321548void FemModel::IceMassx(IssmDouble* pM, bool scaled){/*{{{*/
    15331549
     
    21822198                                        case MaxDivergenceEnum:                  this->MaxDivergencex(&double_result);                  break;
    21832199                                        case IceMassEnum:                        this->IceMassx(&double_result,false);                  break;
     2200                                        case IcefrontMassFluxEnum:               this->IcefrontMassFluxx(&double_result,false);         break;
    21842201                                        case IceMassScaledEnum:                  this->IceMassx(&double_result,true);                   break;
    21852202                                        case IceVolumeEnum:                      this->IceVolumex(&double_result,false);                break;
     
    22102227                                        case TotalSmbScaledEnum:                 this->TotalSmbx(&double_result,true);                  break;
    22112228
    2212                            /*Scalar control output*/
    2213                                 case SurfaceAbsVelMisfitEnum:       SurfaceAbsVelMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);        break;
    2214                                 case SurfaceRelVelMisfitEnum:       SurfaceRelVelMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);        break;
    2215                                 case SurfaceLogVelMisfitEnum:       SurfaceLogVelMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);        break;
    2216                                 case SurfaceLogVxVyMisfitEnum:      SurfaceLogVxVyMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);       break;
    2217                                 case SurfaceAverageVelMisfitEnum:   SurfaceAverageVelMisfitx(&double_result,this);                                                  break;
    2218                                 case ThicknessAbsMisfitEnum:        ThicknessAbsMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);         break;
    2219                                 case ThicknessAbsGradientEnum:      this->ThicknessAbsGradientx(&double_result);                                                    break;
    2220                                 case ThicknessAlongGradientEnum:    ThicknessAlongGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);     break;
    2221                                 case ThicknessAcrossGradientEnum:   ThicknessAcrossGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);    break;
    2222                                 case ThicknessPositiveEnum:         this->ThicknessPositivex(&double_result);                                                       break;
    2223                                 case RheologyBbarAbsGradientEnum:   RheologyBbarAbsGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);    break;
    2224                                 case RheologyBAbsGradientEnum:      RheologyBAbsGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);       break;
    2225                                 case RheologyBInitialguessMisfitEnum:  RheologyBInitialguessMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);       break;
    2226                                 case DragCoefficientAbsGradientEnum:DragCoefficientAbsGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters); break;
    2227                                 case BalancethicknessMisfitEnum:    BalancethicknessMisfitx(&double_result);                                                        break;
    2228                                 case SurfaceAbsMisfitEnum:          SurfaceAbsMisfitx(&double_result); break;
    2229                                 case OmegaAbsGradientEnum:          OmegaAbsGradientx(&double_result); break;
    2230                                 case EtaDiffEnum:                   EtaDiffx(&double_result); break;
     2229                                        /*Scalar control output*/
     2230                                        case SurfaceAbsVelMisfitEnum:       SurfaceAbsVelMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);        break;
     2231                                        case SurfaceRelVelMisfitEnum:       SurfaceRelVelMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);        break;
     2232                                        case SurfaceLogVelMisfitEnum:       SurfaceLogVelMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);        break;
     2233                                        case SurfaceLogVxVyMisfitEnum:      SurfaceLogVxVyMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);       break;
     2234                                        case SurfaceAverageVelMisfitEnum:   SurfaceAverageVelMisfitx(&double_result,this);                                                  break;
     2235                                        case ThicknessAbsMisfitEnum:        ThicknessAbsMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);         break;
     2236                                        case ThicknessAbsGradientEnum:      this->ThicknessAbsGradientx(&double_result);                                                    break;
     2237                                        case ThicknessAlongGradientEnum:    ThicknessAlongGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);     break;
     2238                                        case ThicknessAcrossGradientEnum:   ThicknessAcrossGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);    break;
     2239                                        case ThicknessPositiveEnum:         this->ThicknessPositivex(&double_result);                                                       break;
     2240                                        case RheologyBbarAbsGradientEnum:   RheologyBbarAbsGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);    break;
     2241                                        case RheologyBAbsGradientEnum:      RheologyBAbsGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);       break;
     2242                                        case RheologyBInitialguessMisfitEnum:  RheologyBInitialguessMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);       break;
     2243                                        case DragCoefficientAbsGradientEnum:DragCoefficientAbsGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters); break;
     2244                                        case BalancethicknessMisfitEnum:    BalancethicknessMisfitx(&double_result);                                                        break;
     2245                                        case SurfaceAbsMisfitEnum:          SurfaceAbsMisfitx(&double_result); break;
     2246                                        case OmegaAbsGradientEnum:          OmegaAbsGradientx(&double_result); break;
     2247                                        case EtaDiffEnum:                   EtaDiffx(&double_result); break;
    22312248
    22322249                                   /*Vector */
     
    22342251
    22352252                                                /*Vector layout*/
     2253                                                if(!IsInputEnum(output_enum)) _error_("Cannot output \""<<EnumToStringx(output_enum)<<"\" because it is not an input");
    22362254                                                int interpolation,nodesperelement,size,nlines,ncols,array_size;
    22372255                                                int rank_interpolation=-1,rank_nodesperelement=-1,rank_arraysize=-1,max_rank_arraysize=0;
     
    23852403                case IceVolumeAboveFloatationEnum:       this->IceVolumeAboveFloatationx(responses, false); break;
    23862404                case IceVolumeAboveFloatationScaledEnum: this->IceVolumeAboveFloatationx(responses, true); break;
     2405                case IcefrontMassFluxEnum:               this->IcefrontMassFluxx(responses, true); break;
    23872406                case GroundedAreaEnum:                   this->GroundedAreax(responses, false); break;
    23882407                case GroundedAreaScaledEnum:             this->GroundedAreax(responses, true); break;
  • issm/trunk-jpl/src/c/classes/FemModel.h

    r23652 r23885  
    101101                void GroundedAreax(IssmDouble* pV, bool scaled);
    102102                void IcefrontAreax();
     103                void IcefrontMassFluxx(IssmDouble* presponse, bool scaled);
    103104                void IceMassx(IssmDouble* pV, bool scaled);
    104105                void IceVolumex(IssmDouble* pV, bool scaled);
  • issm/trunk-jpl/src/c/modules/OutputDefinitionsResponsex/OutputDefinitionsResponsex.cpp

    r23066 r23885  
    3434        /*If we are here, did not find the definition for this response, not good!: */
    3535        _error_("Could not find the response for output definition " << output_string << " because could not find the definition itself!");
    36 
    3736}
    3837
     
    6362                                <<" ("<<output_enum<<")"
    6463                                << " because could not find the definition itself!");
    65 
    6664}
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r23882 r23885  
    10541054        MassFluxEnum,
    10551055        GroundinglineMassFluxEnum,
    1056         IceFrontMassFluxEnum,
     1056        IcefrontMassFluxEnum,
    10571057        MasstransportAnalysisEnum,
    10581058        MasstransportSolutionEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r23882 r23885  
    10581058                case MassFluxEnum : return "MassFlux";
    10591059                case GroundinglineMassFluxEnum : return "GroundinglineMassFlux";
    1060                 case IceFrontMassFluxEnum : return "IceFrontMassFlux";
     1060                case IcefrontMassFluxEnum : return "IcefrontMassFlux";
    10611061                case MasstransportAnalysisEnum : return "MasstransportAnalysis";
    10621062                case MasstransportSolutionEnum : return "MasstransportSolution";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r23882 r23885  
    10821082              else if (strcmp(name,"MassFlux")==0) return MassFluxEnum;
    10831083              else if (strcmp(name,"GroundinglineMassFlux")==0) return GroundinglineMassFluxEnum;
    1084               else if (strcmp(name,"IceFrontMassFlux")==0) return IceFrontMassFluxEnum;
     1084              else if (strcmp(name,"IcefrontMassFlux")==0) return IcefrontMassFluxEnum;
    10851085              else if (strcmp(name,"MasstransportAnalysis")==0) return MasstransportAnalysisEnum;
    10861086              else if (strcmp(name,"MasstransportSolution")==0) return MasstransportSolutionEnum;
Note: See TracChangeset for help on using the changeset viewer.