Changeset 21242


Ignore:
Timestamp:
09/30/16 21:29:49 (8 years ago)
Author:
Eric.Larour
Message:

CHG: CreateOutputDefinitions -> fixed some issues with nodalvalue strings instead of enums being expected now.
sealevelrise_core: unhooked geodetic, still have to figure out why it messes up the gradient computations.

Location:
issm/branches/trunk-larour-NatClimateChange2016/src/c
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/branches/trunk-larour-NatClimateChange2016/src/c/cores/sealevelrise_core.cpp

    r21226 r21242  
    8585                InputUpdateFromVectorx(femmodel,Sg,SealevelEnum,VertexSIdEnum);
    8686
    87                 /*compute other geodetic signatures, such as absolute sea level chagne, components of 3-D crustal motion: */
    88                 /*Initialize:*/
    89                 U_radial = new Vector<IssmDouble>(gsize);
    90                 U_north = new Vector<IssmDouble>(gsize);
    91                 U_east = new Vector<IssmDouble>(gsize);
    92                 Sg_absolute = new Vector<IssmDouble>(gsize);
    93                
    94                 /*call the geodetic main modlule:*/
    95                 femmodel->SealevelriseGeodetic(U_radial,U_north,U_east,Sg,latitude,longitude,radius,xx,yy,zz);
    96 
    97                 /*compute: absolute sea level change = relative sea level change + vertical motion*/
    98                 Sg->Copy(Sg_absolute); Sg_absolute->AXPY(U_radial,1);
    99                
    100                 /*get results into elements:*/
    101                 InputUpdateFromVectorx(femmodel,U_radial,SealevelUmotionEnum,VertexSIdEnum);    // radial displacement
    102                 InputUpdateFromVectorx(femmodel,U_north,SealevelNmotionEnum,VertexSIdEnum);     // north motion
    103                 InputUpdateFromVectorx(femmodel,U_east,SealevelEmotionEnum,VertexSIdEnum);              // east motion
    104                 InputUpdateFromVectorx(femmodel,Sg_absolute,SealevelAbsoluteEnum,VertexSIdEnum);
     87                int geodetic=0;
     88                if (geodetic){
     89
     90                        /*compute other geodetic signatures, such as absolute sea level chagne, components of 3-D crustal motion: */
     91                        /*Initialize:*/
     92                        U_radial = new Vector<IssmDouble>(gsize);
     93                        U_north = new Vector<IssmDouble>(gsize);
     94                        U_east = new Vector<IssmDouble>(gsize);
     95                        Sg_absolute = new Vector<IssmDouble>(gsize);
     96                       
     97                        /*call the geodetic main modlule:*/
     98                        femmodel->SealevelriseGeodetic(U_radial,U_north,U_east,Sg,latitude,longitude,radius,xx,yy,zz);
     99
     100                        /*compute: absolute sea level change = relative sea level change + vertical motion*/
     101                        Sg->Copy(Sg_absolute); Sg_absolute->AXPY(U_radial,1);
     102                       
     103                        /*get results into elements:*/
     104                        InputUpdateFromVectorx(femmodel,U_radial,SealevelUmotionEnum,VertexSIdEnum);    // radial displacement
     105                        InputUpdateFromVectorx(femmodel,U_north,SealevelNmotionEnum,VertexSIdEnum);     // north motion
     106                        InputUpdateFromVectorx(femmodel,U_east,SealevelEmotionEnum,VertexSIdEnum);              // east motion
     107                        InputUpdateFromVectorx(femmodel,Sg_absolute,SealevelAbsoluteEnum,VertexSIdEnum);
     108                        delete U_radial;
     109                        delete U_north;
     110                        delete U_east;
     111                        delete Sg_absolute;
     112                }
    105113               
    106114                if(save_results){
     
    115123                delete Sg;
    116124                delete Sg_eustatic;
    117                 delete U_radial;
    118                 delete U_north;
    119                 delete U_east;
    120                 delete Sg_absolute;
    121125                if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
    122126        }
  • issm/branches/trunk-larour-NatClimateChange2016/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp

    r21049 r21242  
    141141                                int          numnodalvalues;
    142142                                char**       nodalvalue_name_s             = NULL;   
    143                                 int*         nodalvalue_definitionenums_s             = NULL;   
    144                                 int*         nodalvalue_model_enum_s        = NULL;
     143                                char**       nodalvalue_definitionstrings             = NULL;   
     144                                char**       nodalvalue_modelstrings        = NULL;
    145145                                int*         nodalvalue_node_s = NULL;
    146146
    147147                                /*Fetch name, model_enum, etc ... (see src/m/classes/nodalvalue.m): */
    148148                                iomodel->FetchMultipleData(&nodalvalue_name_s,&numnodalvalues,            "md.nodalvalue.name");
    149                                 iomodel->FetchMultipleData(&nodalvalue_definitionenums_s,&numnodalvalues, "md.nodalvalue.definitionenum");
    150                                 iomodel->FetchMultipleData(&nodalvalue_model_enum_s,&numnodalvalues,      "md.nodalvalue.model_enum");
     149                                iomodel->FetchMultipleData(&nodalvalue_definitionstrings,&numnodalvalues, "md.nodalvalue.definitionenum");
     150                                iomodel->FetchMultipleData(&nodalvalue_modelstrings,&numnodalvalues,      "md.nodalvalue.model_enum");
    151151                                iomodel->FetchMultipleData(&nodalvalue_node_s,&numnodalvalues,            "md.nodalvalue.node");
    152152
     
    154154
    155155                                        /*First create a nodalvalue object for that specific enum (nodalvalue_model_enum_s[j]):*/
    156                                         output_definitions->AddObject(new Nodalvalue(nodalvalue_name_s[j],nodalvalue_definitionenums_s[j],nodalvalue_model_enum_s[j],nodalvalue_node_s[j]-1)); //-1 because matlab to c indexing.
     156                                        output_definitions->AddObject(new Nodalvalue(nodalvalue_name_s[j],StringToEnumx(nodalvalue_definitionstrings[j]),StringToEnumx(nodalvalue_modelstrings[j]),nodalvalue_node_s[j]-1)); //-1 because matlab to c indexing.
    157157                                }
    158158                                       
     
    164164                                }
    165165                                xDelete<char*>(nodalvalue_name_s);
    166                                 xDelete<int>(nodalvalue_model_enum_s);
    167                                 xDelete<int>(nodalvalue_definitionenums_s);
     166                                xDelete<char*>(nodalvalue_modelstrings);
     167                                xDelete<char*>(nodalvalue_definitionstrings);
    168168                                xDelete<int>(nodalvalue_node_s);
    169169                                /*}}}*/
Note: See TracChangeset for help on using the changeset viewer.