Changeset 22279


Ignore:
Timestamp:
11/29/17 02:32:12 (7 years ago)
Author:
bdef
Message:

BUG:Fixing leaks

Location:
issm/trunk-jpl/src/c/classes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r22277 r22279  
    44694469                                /*Intermediaries*/
    44704470                                Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(j));
    4471                                 transient_input->Configure(element->parameters);
     4471                                //transient_input->Configure(element->parameters);
    44724472                                element->inputs->AddInput(transient_input);
    44734473                        }
     
    45134513/*}}}*/
    45144514void FemModel::AverageTransientOutputx(int* input_enum,IssmDouble init_time,int numoutputs){ /*{{{*/
    4515         IssmDouble* time_averaged=NULL;
     4515
    45164516  for(int i=0;i<numoutputs;i++){
    45174517                if(input_enum[i]<0){
     
    45234523                                Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(j));
    45244524                                int  numvertices = element->GetNumberOfVertices();
    4525                                 //xNew<IssmDouble>(numvertices);
     4525                                IssmDouble* time_averaged=NULL;
    45264526
    45274527                                Input* input=element->inputs->GetInput(input_enum[i]); _assert_(input);
    45284528                                TransientInput* stacking_input=NULL;
    45294529                                stacking_input=dynamic_cast<TransientInput*>(input);
    4530                                 stacking_input->GetInputAverageOnTimes(&time_averaged, init_time);
    4531 
    4532                                 element->AddInput(TimeAverageEffectivePressureEnum,time_averaged,P1Enum);
     4530                                stacking_input->GetInputAverageOnTimes(&time_averaged,init_time);
     4531
     4532                                element->AddInput(TimeAverageEffectivePressureEnum,&time_averaged[0],P1Enum);
     4533                                xDelete<IssmDouble>(time_averaged);
    45334534                        }
    45344535                }
  • issm/trunk-jpl/src/c/classes/Inputs/TransientInput.cpp

    r22277 r22279  
    313313        IssmDouble  time;
    314314        IssmDouble  preceding_time;
    315         IssmDouble  values[3] = {0.0,0.0,0.0};
     315        IssmDouble* values= NULL;
     316
     317        values=xNew<IssmDouble>(3);
    316318
    317319        for(int i=0;i<this->numtimesteps;i++){
    318320                time                                             = this->timesteps[i];
     321                TriaInput*      input            = (TriaInput*)this->inputs->GetObjectByOffset(i); _assert_(input);
     322                int                                     numnodes = input->NumberofNodes(input->interpolation_type);
    319323                if(i==0){
    320324                        preceding_time = init_time;
     325                        for(int j=0;j<numnodes;j++){
     326                                values[j]=(input->values[j]*(time-preceding_time));
     327                        }
    321328                }
    322329                else{
    323330                        preceding_time = this->timesteps[i-1];
     331                        for(int j=0;j<numnodes;j++){
     332                                values[j]+=(input->values[j]*(time-preceding_time));
     333                                if(i==this->numtimesteps-1){
     334                                        values[j]=values[j]/(this->timesteps[this->numtimesteps-1]-init_time);
     335                                }
     336                        }
    324337                }
    325                 TriaInput*      input            = (TriaInput*)this->inputs->GetObjectByOffset(i); _assert_(input);
    326                 int                                     numnodes = input->NumberofNodes(input->interpolation_type);
    327                 for(int j=0;j<numnodes;j++){
    328                         values[j]+=(input->values[j]*(time-preceding_time));
    329                 }
    330         }
    331         for(int j       =       0;j<3;j++){
    332                 values[j]/=(this->timesteps[this->numtimesteps-1]-init_time);
    333                 //printf("final value is %e\n",values[j]);
    334338        }
    335339        *pvalues=values;
Note: See TracChangeset for help on using the changeset viewer.