Changeset 27065


Ignore:
Timestamp:
06/16/22 15:45:38 (3 years ago)
Author:
Eric.Larour
Message:

CHG: big segfault fix where the times vector was coming into the transient input initialization without being allocated!
Was going fine on pleiades, my macosx caught it, big deal! The times were all garbage.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/branches/trunk-larour-SLPS2022/src/c/classes/IoModel.cpp

    r26556 r27065  
    18381838                                matrix=array[i];
    18391839
     1840                                //initialize times:
     1841                                if(M==this->numberofvertices || M==(this->numberofvertices+1)){
     1842                                        times=xNew<IssmDouble>(N);
     1843                                        if(M==this->numberofvertices) times[0] = matrix[M-1];
     1844                                        if(M==this->numberofvertices+1) for(int t=0;t<N;t++) times[t] = matrix[(M-1)*N+t];
     1845                                }
     1846                                else if(M==this->numberofelements || M==(this->numberofelements+1)){
     1847                                        times=xNew<IssmDouble>(N);
     1848                                        if(M==this->numberofelements) times[0] = matrix[M-1];
     1849                                        if(M==this->numberofelements+1) for(int t=0;t<N;t++) times[t] = matrix[(M-1)*N+t];
     1850                                }
     1851                                else if(M==2 || M==1){
     1852                                        times=xNew<IssmDouble>(N);
     1853                                        if(M==1) times[0] = 0;
     1854                                        if(M==2) for(int t=0;t<N;t++) times[t] = matrix[(M-1)*N+t];
     1855                                }
     1856                                else _error_("FetchDataToInput error message: row size of MatArray elements should be either numberofelements (+1) or numberofvertices (+1)");
     1857
    18401858                                //initialize transient input dataset:
    18411859                                TransientInput* transientinput=inputs->SetDatasetTransientInput(input_enum,i, times,N);
     
    18581876
    18591877                                        if(M==this->numberofvertices || M==(this->numberofvertices+1)){
    1860 
    1861                                                 //recover time vector:
    1862                                                 times=xNew<IssmDouble>(N);
    1863                                                 if(M==this->numberofvertices) times[0] = matrix[M-1];
    1864                                                 if(M==this->numberofvertices+1) for(int t=0;t<N;t++) times[t] = matrix[(M-1)*N+t];
    18651878
    18661879                                                IssmDouble* values=xNew<IssmDouble>(numvertices);
     
    18801893
    18811894                                                IssmDouble value;
    1882 
    1883                                                 //recover time vector:
    1884                                                 times=xNew<IssmDouble>(N);
    1885                                                 if(M==this->numberofelements) times[0] = matrix[M-1];
    1886                                                 if(M==this->numberofelements+1) for(int t=0;t<N;t++) times[t] = matrix[(M-1)*N+t];
    18871895
    18881896                                                for(int t=0;t<N;t++){
     
    18981906                                        else if(M==2 || M==1){
    18991907                                                IssmDouble value;
    1900 
    1901                                                 //recover time vector:
    1902                                                 times=xNew<IssmDouble>(N);
    1903                                                 if(M==1) times[0] = 0;
    1904                                                 if(M==2) for(int t=0;t<N;t++) times[t] = matrix[(M-1)*N+t];
    19051908
    19061909                                                for(int t=0;t<N;t++){
Note: See TracChangeset for help on using the changeset viewer.