Changeset 27902


Ignore:
Timestamp:
09/12/23 15:48:53 (18 months ago)
Author:
youngmc3
Message:

CHG: added cfdragcoeffabsgradtransient

Location:
issm/trunk-jpl/src
Files:
3 added
9 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/Makefile.am

    r27851 r27902  
    9191        ./classes/Cfsurfacesquaretransient.cpp \
    9292        ./classes/Cfdragcoeffabsgrad.cpp \
     93        ./classes/Cfdragcoeffabsgradtransient.cpp \
    9394        ./classes/Cfrheologybbarabsgrad.cpp \
    9495        ./classes/Cfsurfacelogvel.cpp \
  • issm/trunk-jpl/src/c/classes/classes.h

    r27709 r27902  
    2626#include "./Cfsurfacesquaretransient.h"
    2727#include "./Cfdragcoeffabsgrad.h"
     28#include "./Cfdragcoeffabsgradtransient.h"
    2829#include "./Cfrheologybbarabsgrad.h"
    2930#include "./Cfsurfacelogvel.h"
  • issm/trunk-jpl/src/c/datastructures/DataSet.cpp

    r27733 r27902  
    276276                                this->AddObject(cfdragcoeff);
    277277                        }
     278                        else if(obj_enum==CfdragcoeffabsgradtransientEnum){
     279                                Cfdragcoeffabsgradtransient* cfdragcoeff=new Cfdragcoeffabsgradtransient();
     280                                cfdragcoeff->Marshall(marshallhandle);
     281                                this->AddObject(cfdragcoeff);
     282                        }
    278283                        else if(obj_enum==CfrheologybbarabsgradEnum){
    279284                                Cfrheologybbarabsgrad* cfrheologybbarabsgrad=new Cfrheologybbarabsgrad();
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp

    r27795 r27902  
    373373                                /*}}}*/
    374374                        }
     375                        else if (output_definition_enums[i]==CfdragcoeffabsgradtransientEnum){
     376                                /*Deal with cfdragcoeffabsgradtransient: {{{*/
     377
     378                                /*cfdragcoeffabsgrad variables: */
     379                                int          num_cfdragcoeffabsgradtransients, test;
     380                                char**       cfdraggradt_name_s                                         = NULL;   
     381                                char**           cfdraggradt_definitionstring_s         = NULL;   
     382                                IssmDouble** cfdraggradt_weights_s                                      = NULL;
     383                                int*         cfdraggradt_weights_M_s                            = NULL;
     384                                int*         cfdraggradt_weights_N_s                            = NULL;
     385
     386                                /*Fetch name, model_string, observation, observation_string, etc ... (see src/m/classes/cfdragcoeffabsgrad.m): */
     387                                iomodel->FetchMultipleData(&cfdraggradt_name_s,&num_cfdragcoeffabsgradtransients,                                                        "md.cfdragcoeffabsgradtransient.name");
     388                                iomodel->FetchMultipleData(&cfdraggradt_definitionstring_s,&num_cfdragcoeffabsgradtransients,                                            "md.cfdragcoeffabsgradtransient.definitionstring");
     389                                iomodel->FetchMultipleData(&cfdraggradt_weights_s,&cfdraggradt_weights_M_s,&cfdraggradt_weights_N_s,&test,             "md.cfdragcoeffabsgradtransient.weights");
     390                                       
     391                                for(j=0;j<num_cfdragcoeffabsgradtransients;j++){
     392               
     393                                        /*Check that we can use P1 inputs*/
     394                                        if (cfdraggradt_weights_M_s[j]!=iomodel->numberofvertices+1)  _error_("weights should be a P1 time series");
     395                                       
     396                                        /*extract data times from last row of observations*/
     397                                        IssmDouble *datatimes = xNew<IssmDouble>(cfdraggradt_weights_N_s[j]);
     398                                        for(int k=0;k<cfdraggradt_weights_N_s[j];k++) datatimes[k] = (cfdraggradt_weights_s[j])[cfdraggradt_weights_N_s[j]*(cfdraggradt_weights_M_s[j]-1)+k];
     399
     400                                         /*First create a cfdragcoeffabsgradtransient object for that specific string:*/
     401                                        output_definitions->AddObject(new Cfdragcoeffabsgradtransient(cfdraggradt_name_s[j],StringToEnumx(cfdraggradt_definitionstring_s[j]), cfdraggradt_weights_N_s[j], datatimes));
     402
     403                                        /*Now, for this particular cfdragcoeffabsgrad object, make sure we plug into the elements: the observation, and the weights.*/
     404                                        for(Object* & object : elements->objects){
     405
     406                                                Element* element=xDynamicCast<Element*>(object);
     407
     408                                                element->DatasetInputAdd(StringToEnumx(cfdraggradt_definitionstring_s[j]),cfdraggradt_weights_s[j],inputs,iomodel,cfdraggradt_weights_M_s[j],cfdraggradt_weights_N_s[j],1,WeightsSurfaceObservationEnum,WeightsSurfaceObservationEnum);
     409
     410                                        }
     411                                }
     412
     413                                /*Free resources:*/
     414                                for(j=0;j<num_cfdragcoeffabsgradtransients;j++){
     415                                        char* string=NULL;
     416                                        IssmDouble* matrix = NULL;
     417
     418                                        string = cfdraggradt_definitionstring_s[j];             xDelete<char>(string);
     419                                        string = cfdraggradt_name_s[j];    xDelete<char>(string);
     420                                        matrix = cfdraggradt_weights_s[j]; xDelete<IssmDouble>(matrix);
     421                                }
     422                                xDelete<char*>(cfdraggradt_name_s);
     423                                xDelete<char*>(cfdraggradt_definitionstring_s);
     424                                xDelete<IssmDouble*>(cfdraggradt_weights_s);
     425                                xDelete<int>(cfdraggradt_weights_M_s);
     426                                xDelete<int>(cfdraggradt_weights_N_s);
     427                                /*}}}*/
     428                        }
    375429                        else if (output_definition_enums[i]==CfrheologybbarabsgradEnum){
    376430                                /*Deal with cfrheologybbarabsgrad: {{{*/
  • issm/trunk-jpl/src/c/shared/Enum/Enum.vim

    r27863 r27902  
    14181418syn keyword cConstant CalvingPollardEnum
    14191419syn keyword cConstant CfdragcoeffabsgradEnum
     1420syn keyword cConstant CfdragcoeffabsgradtransientEnum
    14201421syn keyword cConstant CfrheologybbarabsgradEnum
    14211422syn keyword cConstant CfsurfacelogvelEnum
     
    17951796syn keyword cType BoolParam
    17961797syn keyword cType Cfdragcoeffabsgrad
     1798syn keyword cType Cfdragcoeffabsgradtransient
    17971799syn keyword cType Cflevelsetmisfit
    17981800syn keyword cType Cfrheologybbarabsgrad
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r27863 r27902  
    14171417        CalvingPollardEnum,
    14181418        CfdragcoeffabsgradEnum,
     1419        CfdragcoeffabsgradtransientEnum,
    14191420        CfrheologybbarabsgradEnum,
    14201421        CfsurfacelogvelEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r27863 r27902  
    14201420                case CalvingPollardEnum : return "CalvingPollard";
    14211421                case CfdragcoeffabsgradEnum : return "Cfdragcoeffabsgrad";
     1422                case CfdragcoeffabsgradtransientEnum : return "Cfdragcoeffabsgradtransient";
    14221423                case CfrheologybbarabsgradEnum : return "Cfrheologybbarabsgrad";
    14231424                case CfsurfacelogvelEnum : return "Cfsurfacelogvel";
  • issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim

    r27863 r27902  
    14111411syn keyword juliaConstC CalvingPollardEnum
    14121412syn keyword juliaConstC CfdragcoeffabsgradEnum
     1413syn keyword juliaConstC CfdragcoeffabsgradtransientEnum
    14131414syn keyword juliaConstC CfrheologybbarabsgradEnum
    14141415syn keyword juliaConstC CfsurfacelogvelEnum
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r27863 r27902  
    14531453              else if (strcmp(name,"CalvingPollard")==0) return CalvingPollardEnum;
    14541454              else if (strcmp(name,"Cfdragcoeffabsgrad")==0) return CfdragcoeffabsgradEnum;
     1455              else if (strcmp(name,"Cfdragcoeffabsgradtransient")==0) return CfdragcoeffabsgradtransientEnum;
    14551456              else if (strcmp(name,"Cfrheologybbarabsgrad")==0) return CfrheologybbarabsgradEnum;
    14561457              else if (strcmp(name,"Cfsurfacelogvel")==0) return CfsurfacelogvelEnum;
     
    14891490              else if (strcmp(name,"DependentObject")==0) return DependentObjectEnum;
    14901491              else if (strcmp(name,"DepthAverageAnalysis")==0) return DepthAverageAnalysisEnum;
    1491               else if (strcmp(name,"DeviatoricStressErrorEstimator")==0) return DeviatoricStressErrorEstimatorEnum;
    14921492         else stage=13;
    14931493   }
    14941494   if(stage==13){
    1495               if (strcmp(name,"Divergence")==0) return DivergenceEnum;
     1495              if (strcmp(name,"DeviatoricStressErrorEstimator")==0) return DeviatoricStressErrorEstimatorEnum;
     1496              else if (strcmp(name,"Divergence")==0) return DivergenceEnum;
    14961497              else if (strcmp(name,"Domain3Dsurface")==0) return Domain3DsurfaceEnum;
    14971498              else if (strcmp(name,"DoubleArrayInput")==0) return DoubleArrayInputEnum;
     
    16121613              else if (strcmp(name,"LoveKt")==0) return LoveKtEnum;
    16131614              else if (strcmp(name,"LoveLf")==0) return LoveLfEnum;
    1614               else if (strcmp(name,"LoveLt")==0) return LoveLtEnum;
    16151615         else stage=14;
    16161616   }
    16171617   if(stage==14){
    1618               if (strcmp(name,"LoveTidalHt")==0) return LoveTidalHtEnum;
     1618              if (strcmp(name,"LoveLt")==0) return LoveLtEnum;
     1619              else if (strcmp(name,"LoveTidalHt")==0) return LoveTidalHtEnum;
    16191620              else if (strcmp(name,"LoveTidalKt")==0) return LoveTidalKtEnum;
    16201621              else if (strcmp(name,"LoveTidalLt")==0) return LoveTidalLtEnum;
     
    17351736              else if (strcmp(name,"SealevelAbsolute")==0) return SealevelAbsoluteEnum;
    17361737              else if (strcmp(name,"SealevelEmotion")==0) return SealevelEmotionEnum;
    1737               else if (strcmp(name,"SealevelchangePolarMotionX")==0) return SealevelchangePolarMotionXEnum;
    17381738         else stage=15;
    17391739   }
    17401740   if(stage==15){
    1741               if (strcmp(name,"SealevelchangePolarMotionY")==0) return SealevelchangePolarMotionYEnum;
     1741              if (strcmp(name,"SealevelchangePolarMotionX")==0) return SealevelchangePolarMotionXEnum;
     1742              else if (strcmp(name,"SealevelchangePolarMotionY")==0) return SealevelchangePolarMotionYEnum;
    17421743              else if (strcmp(name,"SealevelchangePolarMotionZ")==0) return SealevelchangePolarMotionZEnum;
    17431744              else if (strcmp(name,"SealevelchangePolarMotion")==0) return SealevelchangePolarMotionEnum;
Note: See TracChangeset for help on using the changeset viewer.