Changeset 27465
- Timestamp:
- 12/21/22 05:46:25 (2 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r27462 r27465 2431 2431 const int numvertices = this->GetNumberOfVertices(); 2432 2432 bool isadjustsmb = false; 2433 int basinid,bb1,bb2; 2434 IssmDouble ela,refelevation_b; 2433 int basinid,bb1,bb2,mindex; 2434 IssmDouble ela,refelevation_b,time,dt,fracyear,yts; 2435 IssmDouble monthsteps[12] = {0.,1./12,2./12,3./12,4./12,5./12,6./12,7./12,8./12,9./12,10./12,11./12}; 2435 2436 IssmDouble* surfacelist = xNew<IssmDouble>(numvertices); 2436 2437 IssmDouble* smblist = xNew<IssmDouble>(numvertices); 2437 /* numelevbins values of lapse rates */2438 /* numelevbins values of lapse rates at current month */ 2438 2439 IssmDouble* lapserates_b = xNew<IssmDouble>(numelevbins); 2439 /* (numelevbins-1) limits between elevation bins (be cautious with indexing) */2440 /* (numelevbins-1) limits between elevation bins at current month (be cautious with indexing) */ 2440 2441 IssmDouble* elevbins_b = xNew<IssmDouble>(numelevbins-1); 2442 2443 /*Find month of current time step*/ 2444 this->parameters->FindParam(&yts,ConstantsYtsEnum); 2445 this->parameters->FindParam(&time,TimeEnum); 2446 this->parameters->FindParam(&dt,TimesteppingTimeStepEnum); _assert_(dt<yts); 2447 fracyear = time/yts-floor(time/yts); 2448 for(int i=1;i<12;i++){ 2449 if(fracyear>=monthsteps[i-1]) mindex = i-1; 2450 } 2451 if(fracyear>=monthsteps[11]) mindex = 11; 2441 2452 2442 2453 /*Retrieve SMB values non-adjusted for SMB lapse rate*/ … … 2447 2458 this->GetInputValue(&basinid,SmbBasinsIdEnum); 2448 2459 refelevation_b = refelevation[basinid]; 2449 for(int ii=0;ii<(numelevbins-1);ii++) elevbins_b[ii] = elevbins[basinid*(numelevbins-1)+ii]; 2460 /*Retrieve bins and laps rates for this basin at this month*/ 2461 for(int ii=0;ii<(numelevbins-1);ii++) elevbins_b[ii] = elevbins[basinid*(numelevbins-1)*12+mindex*(numelevbins-1)+ii]; 2450 2462 for(int ii=0;ii<numelevbins;ii++){ 2451 lapserates_b[ii] = lapserates[basinid*numelevbins +ii];2463 lapserates_b[ii] = lapserates[basinid*numelevbins*12+mindex*numelevbins+ii]; 2452 2464 if(lapserates_b[ii]!=0) isadjustsmb=true; 2453 2465 } 2466 2454 2467 /*Adjust SMB if any lapse rate value is non-zero*/ 2455 2468 if(isadjustsmb){ -
issm/trunk-jpl/src/m/classes/SMBarma.m
r27417 r27465 102 102 md = checkfield(md,'fieldname','smb.refelevation','NaN',1,'Inf',1,'>=',0,'size',[1,md.smb.num_basins],'numel',md.smb.num_basins); 103 103 end 104 [nbas,nbins] = size(md.smb.lapserates); 105 if (any(isnan(reshape(md.smb.lapserates,[1,nbas*nbins]))==0) || numel(md.smb.lapserates)>1) 106 md = checkfield(md,'fieldname','smb.lapserates','NaN',1,'Inf',1,'size',[md.smb.num_basins,nbins],'numel',md.smb.num_basins*nbins); 107 md = checkfield(md,'fieldname','smb.elevationbins','NaN',1,'Inf',1,'size',[md.smb.num_basins,nbins-1],'numel',md.smb.num_basins*(nbins-1)); 104 nbas = size(md.smb.lapserates,1); 105 nbins = size(md.smb.lapserates,2); 106 ntmlapse = size(md.smb.lapserates,3); 107 if(ntmlapse>1 && ntmlapse~=12) 108 error('3rd dimension of md.smb.lapserates must be of size 1 or 12 (for monthly lapse rates)'); 109 end 110 if (any(isnan(reshape(md.smb.lapserates,[1,nbas*nbins*ntmlapse]))==0) || numel(md.smb.lapserates)>1) 111 md = checkfield(md,'fieldname','smb.lapserates','NaN',1,'Inf',1,'size',[md.smb.num_basins,nbins,ntmlapse],'numel',md.smb.num_basins*nbins*ntmlapse); 112 md = checkfield(md,'fieldname','smb.elevationbins','NaN',1,'Inf',1,'size',[md.smb.num_basins,max(1,nbins-1),ntmlapse],'numel',md.smb.num_basins*max(1,nbins-1)*ntmlapse); 108 113 if(issorted(md.smb.elevationbins,2)==0) 109 114 error('md.smb.elevationbins should have rows in order of increasing elevation'); 110 115 end 111 elseif (isnan(md.smb.elevationbins(1,1 ))==0 || numel(md.smb.elevationbins)>1)116 elseif (isnan(md.smb.elevationbins(1,1,1))==0 || numel(md.smb.elevationbins)>1) 112 117 %elevationbins specified but not lapserates: this will inevitably lead to inconsistencies 113 [nbas,nbins] = size(md.smb.elevationbins); 114 nbins = nbins+1; 115 md = checkfield(md,'fieldname','smb.lapserates','NaN',1,'Inf',1,'size',[md.smb.num_basins,nbins],'numel',md.smb.num_basins*nbins); 116 md = checkfield(md,'fieldname','smb.elevationbins','NaN',1,'Inf',1,'size',[md.smb.num_basins,nbins-1],'numel',md.smb.num_basins*(nbins-1)); 118 nbas = size(md.smb.elevationbins,1); 119 nbins = size(md.smb.elevationbins,2); 120 nbins = nbins+1; 121 ntmlapse = size(md.smb.elevationbins,3); 122 md = checkfield(md,'fieldname','smb.lapserates','NaN',1,'Inf',1,'size',[md.smb.num_basins,max(1,nbins-1),ntmlapse],'numel',md.smb.num_basins*nbins*ntmlapse); 123 md = checkfield(md,'fieldname','smb.elevationbins','NaN',1,'Inf',1,'size',[md.smb.num_basins,max(1,nbins-1),ntmlapse],'numel',md.smb.num_basins*max(1,nbins-1)*ntmlapse); 117 124 end 118 125 end … … 135 142 fielddisplay(self,'arlag_coefs','basin-specific vectors of AR lag coefficients [unitless]'); 136 143 fielddisplay(self,'malag_coefs','basin-specific vectors of MA lag coefficients [unitless]'); 137 fielddisplay(self,'lapserates','basin-specific SMB lapse rates applied in each elevation bin, 1 row per basin, 1 column per bin [m ice eq yr^-1 m^-1] (default: no lapse rate)');138 fielddisplay(self,'elevationbins','basin-specific separations between elevation bins, 1 row per basin, 1 column per limit between bins [m] (default: no basin separation)');144 fielddisplay(self,'lapserates','basin-specific SMB lapse rates applied in each elevation bin, 1 row per basin, 1 column per bin, dimension 3 can be of size 12 to prescribe monthly varying values [m ice eq yr^-1 m^-1] (default: no lapse rate)'); 145 fielddisplay(self,'elevationbins','basin-specific separations between elevation bins, 1 row per basin, 1 column per limit between bins, dimension 3 can be of size 12 to prescribe monthly varying values [m] (default: no basin separation)'); 139 146 fielddisplay(self,'refelevation','basin-specific reference elevations at which SMB is calculated, and from which SMB is downscaled using lapserates (default: basin mean elevation) [m]'); 140 147 fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'); … … 156 163 tempelevationbins = md.smb.elevationbins; 157 164 temprefelevation = md.smb.refelevation; 158 [nbas,nbins] = size(md.smb.lapserates); 159 if(any(isnan(reshape(md.smb.lapserates,[1,nbas*nbins])))) 160 templapserates = zeros(md.smb.num_basins,2); 165 nbas = size(md.smb.lapserates,1); 166 nbins = size(md.smb.lapserates,2); 167 ntmlapse = size(md.smb.lapserates,3); 168 if(any(isnan(reshape(md.smb.lapserates,[1,nbas*nbins*ntmlapse])))) 169 templapserates = zeros(md.smb.num_basins,2,12); 161 170 disp(' smb.lapserates not specified: set to 0'); 162 tempelevationbins = zeros(md.smb.num_basins,1); %dummy elevation bins 171 tempelevationbins = zeros(md.smb.num_basins,1,12); %dummy elevation bins 172 elseif(ntmlapse==1) 173 templapserates = repmat(templapserates,1,1,12); %same values each month 174 tempelevationbins = repmat(tempelevationbins,1,1,12); %same values each month 163 175 end 164 176 if(any(isnan(md.smb.refelevation))) … … 173 185 temprefelevation(ii) = sum(areas(indices).*elemsh)/sum(areas(indices)); 174 186 end 175 if(any(reshape(md.smb.lapserates,[1,nbas*nbins ])~=0))187 if(any(reshape(md.smb.lapserates,[1,nbas*nbins*12])~=0)) 176 188 disp(' smb.refelevation not specified: Reference elevations set to mean surface elevation of basins'); 177 189 end 178 190 end 179 [nbas,nbins] = size(templapserates); 191 nbas = size(templapserates,1); 192 nbins = size(templapserates,2); 193 temp2dlapserates = zeros(nbas,nbins*12); 194 temp2delevationbins = zeros(nbas,max(1,nbins-1)*12); 195 for(ii=[1:12]) 196 jj = 1+(ii-1)*nbins; 197 temp2dlapserates(:,jj:jj+nbins-1) = templapserates(:,:,ii); 198 kk = 1+(ii-1)*(nbins-1); 199 temp2delevationbins(:,kk:kk+nbins-2) = tempelevationbins(:,:,ii); 200 end 180 201 181 202 % Scale the parameters % … … 234 255 WriteData(fid,prefix,'object',self,'class','smb','fieldname','malag_coefs','format','DoubleMat','name','md.smb.malag_coefs','yts',yts); 235 256 WriteData(fid,prefix,'data',dbreaks,'name','md.smb.datebreaks','format','DoubleMat','scale',yts); 236 WriteData(fid,prefix,'data',temp lapserates,'format','DoubleMat','name','md.smb.lapserates','scale',1./yts,'yts',yts);237 WriteData(fid,prefix,'data',temp elevationbins,'format','DoubleMat','name','md.smb.elevationbins');257 WriteData(fid,prefix,'data',temp2dlapserates,'format','DoubleMat','name','md.smb.lapserates','scale',1./yts,'yts',yts); 258 WriteData(fid,prefix,'data',temp2delevationbins,'format','DoubleMat','name','md.smb.elevationbins'); 238 259 WriteData(fid,prefix,'data',temprefelevation,'format','DoubleMat','name','md.smb.refelevation'); 239 260 WriteData(fid,prefix,'data',nbins,'format','Integer','name','md.smb.num_bins'); -
issm/trunk-jpl/src/m/classes/SMBarma.py
r27458 r27465 49 49 s += '{}\n'.format(fielddisplay(self, 'arlag_coefs', 'basin-specific vectors of AR lag coefficients [unitless]')) 50 50 s += '{}\n'.format(fielddisplay(self, 'malag_coefs', 'basin-specific vectors of MA lag coefficients [unitless]')) 51 s += '{}\n'.format(fielddisplay(self, 'lapserates', 'basin-specific SMB lapse rates applied in each elevation bin, 1 row per basin, 1 column per bin [m ice eq yr^-1 m^-1] (default: no lapse rate)'))52 s += '{}\n'.format(fielddisplay(self, 'elevationbins', 'basin-specific SMB lapse rates applied in range of SMB<0 [m ice eq yr^-1 m^-1] (default: no lapse rate)'))51 s += '{}\n'.format(fielddisplay(self, 'lapserates', 'basin-specific SMB lapse rates applied in each elevation bin, 1 row per basin, 1 column per bin, dimension 3 can be of size 12 to prescribe monthly varying values [m ice eq yr^-1 m^-1] (default: no lapse rate)')) 52 s += '{}\n'.format(fielddisplay(self, 'elevationbins', 'basin-specific separations between elevation bins, 1 row per basin, 1 column per limit between bins, dimension 3 can be of size 12 to prescribe monthly varying values [m] (default: no basin separation)')) 53 53 s += '{}\n'.format(fielddisplay(self, 'refelevation', 'basin-specific reference elevations at which SMB is calculated, and from which SMB is downscaled using lapserates (default: basin mean elevation) [m]')) 54 54 s += '{}\n'.format(fielddisplay(self, 'steps_per_step', 'number of smb steps per time step')) … … 127 127 128 128 if(np.any(np.isnan(self.lapserates) is False) or np.size(self.lapserates) > 1): 129 nbas = md.smb.num_basins 129 130 if len(np.shape(self.lapserates)) == 1: 130 self.lapserates = np.array([self.lapserates])131 131 nbins = 1 132 else: 132 self.lapserates = np.reshape(self.lapserates,[nbas,nbins,1]) 133 elif(len(np.shape(self.lapserates)) == 2): 133 134 nbins = np.shape(self.lapserates)[1] 134 if len(np.shape(self.elevationbins)) == 1: 135 self.elevationbins = np.array([self.elevationbins]) 136 md = checkfield(md, 'fieldname', 'smb.lapserates', 'NaN', 1, 'Inf', 1, 'size', [md.smb.num_basins, nbins], 'numel', md.smb.num_basins*nbins) 137 md = checkfield(md, 'fieldname', 'smb.elevationbins', 'NaN', 1, 'Inf', 1, 'size', [md.smb.num_basins, nbins-1], 'numel', md.smb.num_basins*(nbins-1)) 135 self.lapserates = np.reshape(self.lapserates,[nbas,nbins,1]) 136 elif(len(np.shape(self.lapserates)) == 3): 137 nbins = np.shape(self.lapserates)[1] 138 ntmlapse = np.shape(self.lapserates)[2] 139 if len(np.shape(self.elevationbins)) < 3: 140 self.elevationbins = np.reshape(self.elevationbins,[nbas,max(1,nbins-1),ntmlapse]) 141 md = checkfield(md, 'fieldname', 'smb.lapserates', 'NaN', 1, 'Inf', 1, 'size', [nbas,nbins,ntmlapse], 'numel', md.smb.num_basins*nbins*ntmlapse) 142 md = checkfield(md, 'fieldname', 'smb.elevationbins', 'NaN', 1, 'Inf', 1, 'size', [nbas,max(1,nbins-1),ntmlapse], 'numel', md.smb.num_basins*max(1,nbins-1)*ntmlapse) 138 143 for rr in range(md.smb.num_basins): 139 144 if(np.all(self.elevationbins[rr,0:-1]<=self.elevationbins[rr,1:])==False): … … 141 146 elif(np.any(np.isnan(self.elevationbins) is False) or np.size(self.elevationbins) > 1): 142 147 #elevationbins specified but not lapserates: this will inevitably lead to inconsistencies 148 nbas = md.smb.num_basins 143 149 if len(np.shape(self.elevationbins)) == 1: 144 self.elevationbins = np.array([self.elevationbins])145 150 nbins = 1 146 else: 147 nbins = np.shape(self.elevationbins)[1]+1 148 md = checkfield(md, 'fieldname', 'smb.lapserates', 'NaN', 1, 'Inf', 1, 'size', [md.smb.num_basins, nbins], 'numel', md.smb.num_basins*nbins) 149 md = checkfield(md, 'fieldname', 'smb.elevationbins', 'NaN', 1, 'Inf', 1, 'size', [md.smb.num_basins, nbins-1], 'numel', md.smb.num_basins*(nbins-1)) 151 self.elevationbins = np.reshape(self.elevationbins,[nbas,nbins,1]) 152 elif(len(np.shape(self.lapserates)) == 2): 153 nbins = np.shape(self.elevationbins)[1] 154 self.elevationbins = np.reshape(self.elevationbins,[nbas,nbins,1]) 155 elif(len(np.shape(self.lapserates)) == 3): 156 nbins = np.shape(self.lapserates)[1] 157 nbins = nbins-1 158 ntmlapse = np.shape(self.lapserates)[2] 159 md = checkfield(md, 'fieldname', 'smb.lapserates', 'NaN', 1, 'Inf', 1, 'size', [md.smb.num_basins, nbins*ntmlapse], 'numel', md.smb.num_basins*nbins*ntmlapse) 160 md = checkfield(md, 'fieldname', 'smb.elevationbins', 'NaN', 1, 'Inf', 1, 'size', [md.smb.num_basins,max(1,nbins-1)*ntmlapse], 'numel', md.smb.num_basins*max(1,nbins-1)*ntmlapse) 150 161 151 162 md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1]) … … 160 171 nprm = md.smb.num_params; 161 172 nper = md.smb.num_breaks+1; 162 templapserates = np.copy(md.smb.lapserates) 163 tempelevationbins = np.copy(md.smb.elevationbins) 173 if(len(np.shape(md.smb.lapserates))==1): 174 nbins = 1 175 ntmlapse = 1 176 elif(len(np.shape(md.smb.lapserates))==2): 177 nbins = np.shape(md.smb.lapserates)[1] 178 ntmlapse = 1 179 elif(len(np.shape(md.smb.lapserates))==3): 180 nbins = np.shape(md.smb.lapserates)[1] 181 ntmlapse = np.shape(md.smb.lapserates)[2] 182 templapserates = np.reshape(md.smb.lapserates,[nbas,nbins,ntmlapse]) 183 tempelevationbins = np.reshape(md.smb.elevationbins,[nbas,max(1,nbins-1),ntmlapse]) 164 184 temprefelevation = np.copy(md.smb.refelevation) 165 185 # Scale the parameters # … … 198 218 199 219 if(np.any(np.isnan(md.smb.lapserates))): 200 templapserates = np.zeros((md.smb.num_basins,2 ))220 templapserates = np.zeros((md.smb.num_basins,2,12)) 201 221 print(' smb.lapserates not specified: set to 0') 202 tempelevationbins = np.zeros((md.smb.num_basins,1)) #dummy elevation bins 222 tempelevationbins = np.zeros((md.smb.num_basins,1,12)) #dummy elevation bins 223 elif(ntmlapse==1): 224 templapserates = np.repeat(templapserates,12,axis=2) 225 tempelevationbins = np.repeat(tempelevationbins,12,axis=2) 203 226 if(np.any(np.isnan(md.smb.refelevation))): 204 227 temprefelevation = np.zeros((md.smb.num_basins)).reshape(1,md.smb.num_basins) … … 213 236 print(' smb.refelevation not specified: Reference elevations set to mean surface elevation of basins') 214 237 nbins = np.shape(templapserates)[1] 238 temp2dlapserates = np.zeros((nbas,nbins*12)) 239 temp2delevationbins = np.zeros((nbas,max(12,(nbins-1)*12))) 240 for ii in range(12): 241 temp2dlapserates[:,ii*nbins:(ii+1)*nbins] = templapserates[:,:,ii] 242 temp2delevationbins[:,ii*(nbins-1):(ii+1)*(nbins-1)] = tempelevationbins[:,:,ii] 215 243 216 244 WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 13, 'format', 'Integer') … … 226 254 WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'malag_coefs', 'format', 'DoubleMat', 'name', 'md.smb.malag_coefs', 'yts', yts) 227 255 WriteData(fid, prefix, 'data', dbreaks, 'name', 'md.smb.datebreaks', 'format', 'DoubleMat','scale',yts) 228 WriteData(fid, prefix, 'data', temp lapserates, 'name', 'md.smb.lapserates', 'format', 'DoubleMat', 'scale', 1 / yts, 'yts', yts)229 WriteData(fid, prefix, 'data', temp elevationbins, 'name', 'md.smb.elevationbins', 'format', 'DoubleMat')256 WriteData(fid, prefix, 'data', temp2dlapserates, 'name', 'md.smb.lapserates', 'format', 'DoubleMat', 'scale', 1 / yts, 'yts', yts) 257 WriteData(fid, prefix, 'data', temp2delevationbins, 'name', 'md.smb.elevationbins', 'format', 'DoubleMat') 230 258 WriteData(fid, prefix, 'data', temprefelevation, 'name', 'md.smb.refelevation', 'format', 'DoubleMat') 231 259 WriteData(fid, prefix, 'data', nbins, 'name', 'md.smb.num_bins', 'format', 'Integer') -
issm/trunk-jpl/test/NightlyRun/test257.m
r27318 r27465 41 41 42 42 md.timestepping.start_time = 0; 43 md.timestepping.time_step = 1 ;44 md.timestepping.final_time = 7;43 md.timestepping.time_step = 1/12; 44 md.timestepping.final_time = 2; 45 45 md.smb = SMBarma(); 46 46 md.smb.num_basins = 3; %number of basins … … 55 55 md.smb.arlag_coefs = [[0.2,0.1,0.05,0.01];[0.4,0.2,-0.2,0.1];[0.4,-0.4,0.1,-0.1]]; 56 56 md.smb.malag_coefs = [1.0;0;0.2]; 57 md.smb.lapserates = [0.01,0.0;0.01,-0.01;0.0,-0.01]; 58 md.smb.elevationbins = [100;150;100]; 57 lm0 = [1e-4*[1,-0.1,-1];1e-6*[1,-0.1,-1];1e-5*[1,-0.1,-1]]; 58 lm1 = [1e-4*[2,-0.2,-2];1e-6*[2,-0.2,-2];1e-5*[2,-0.2,-2]]; 59 lm2 = [1e-4*[3,-0.3,-3];1e-6*[3,-0.3,-3];1e-5*[3,-0.3,-3]]; 60 lm3 = [1e-4*[4,-0.4,-4];1e-6*[4,-0.4,-4];1e-5*[4,-0.4,-4]]; 61 lm4 = [1e-4*[5,-0.5,-5];1e-6*[5,-0.5,-5];1e-5*[5,-0.5,-5]]; 62 lm5 = [1e-4*[6,-0.6,-6];1e-6*[6,-0.6,-6];1e-5*[6,-0.6,-6]]; 63 lm6 = [1e-4*[7,-0.7,-7];1e-6*[7,-0.7,-7];1e-5*[7,-0.7,-7]]; 64 lm7 = [1e-4*[8,-0.8,-8];1e-6*[8,-0.8,-8];1e-5*[8,-0.8,-8]]; 65 lm8 = [1e-4*[9,-0.9,-9];1e-6*[9,-0.9,-9];1e-5*[9,-0.9,-9]]; 66 lm9 = [1e-4*[10,-1,-10];1e-6*[10,-1.0,-10];1e-5*[10,-1.0,-10]]; 67 lm10 = [1e-4*[11,-1.1,-11];1e-6*[11,-1.1,-11];1e-5*[11,-1.1,-11]]; 68 lm11 = [1e-4*[12,-1.2,-12];1e-6*[12,-1.2,-12];1e-5*[12,-1.2,-12]]; 69 md.smb.lapserates = cat(3,lm0,lm1,lm2,lm3,lm4,lm5,lm6,lm7,lm8,lm9,lm10,lm11); 70 md.smb.elevationbins = repmat([100,300;200,400;250,450],1,1,12); 59 71 60 72 %Stochastic forcing … … 79 91 (md.results.TransientSolution(1).IceVolume),... 80 92 (md.results.TransientSolution(1).SmbMassBalance),... 81 (md.results.TransientSolution( 2).Vx),...82 (md.results.TransientSolution( 2).Vy),...83 (md.results.TransientSolution( 2).Vel),...84 (md.results.TransientSolution( 2).Thickness),...85 (md.results.TransientSolution( 2).IceVolume),...86 (md.results.TransientSolution( 2).SmbMassBalance),...87 (md.results.TransientSolution( 7).Vx),...88 (md.results.TransientSolution( 7).Vy),...89 (md.results.TransientSolution( 7).Vel),...90 (md.results.TransientSolution( 7).Thickness),...91 (md.results.TransientSolution( 7).IceVolume),...92 (md.results.TransientSolution( 7).SmbMassBalance),...93 (md.results.TransientSolution(12).Vx),... 94 (md.results.TransientSolution(12).Vy),... 95 (md.results.TransientSolution(12).Vel),... 96 (md.results.TransientSolution(12).Thickness),... 97 (md.results.TransientSolution(12).IceVolume),... 98 (md.results.TransientSolution(12).SmbMassBalance),... 99 (md.results.TransientSolution(24).Vx),... 100 (md.results.TransientSolution(24).Vy),... 101 (md.results.TransientSolution(24).Vel),... 102 (md.results.TransientSolution(24).Thickness),... 103 (md.results.TransientSolution(24).IceVolume),... 104 (md.results.TransientSolution(24).SmbMassBalance),... 93 105 }; -
issm/trunk-jpl/test/NightlyRun/test257.py
r27318 r27465 46 46 47 47 md.timestepping.start_time = 0 48 md.timestepping.time_step = 1 49 md.timestepping.final_time = 848 md.timestepping.time_step = 1/12 49 md.timestepping.final_time = 2 50 50 md.smb = SMBarma() 51 51 md.smb.num_basins = 3 # number of basins … … 60 60 md.smb.arlag_coefs = np.array([[0.2, 0.1, 0.05, 0.01], [0.4, 0.2, -0.2, 0.1], [0.4, -0.4, 0.1, -0.1]]) 61 61 md.smb.malag_coefs = np.array([[1.0],[0],[0.2]]) 62 md.smb.lapserates = np.array([[0.01,0.0],[0.01,-0.01],[0.0,-0.01]]) 63 md.smb.elevationbins = np.array([100,150,100]).reshape(md.smb.num_basins,1) 62 63 lm0 = np.array([1e-4*np.array([1,-0.1,-1]),1e-6*np.array([1,-0.1,-1]),1e-5*np.array([1,-0.1,-1])]) 64 lm1 = np.array([1e-4*np.array([2,-0.2,-2]),1e-6*np.array([2,-0.2,-2]),1e-5*np.array([2,-0.2,-2])]) 65 lm2 = np.array([1e-4*np.array([3,-0.3,-3]),1e-6*np.array([3,-0.3,-3]),1e-5*np.array([3,-0.3,-3])]) 66 lm3 = np.array([1e-4*np.array([4,-0.4,-4]),1e-6*np.array([4,-0.4,-4]),1e-5*np.array([4,-0.4,-4])]) 67 lm4 = np.array([1e-4*np.array([5,-0.5,-5]),1e-6*np.array([5,-0.5,-5]),1e-5*np.array([5,-0.5,-5])]) 68 lm5 = np.array([1e-4*np.array([6,-0.6,-6]),1e-6*np.array([6,-0.6,-6]),1e-5*np.array([6,-0.6,-6])]) 69 lm6 = np.array([1e-4*np.array([7,-0.7,-7]),1e-6*np.array([7,-0.7,-7]),1e-5*np.array([7,-0.7,-7])]) 70 lm7 = np.array([1e-4*np.array([8,-0.8,-8]),1e-6*np.array([8,-0.8,-8]),1e-5*np.array([8,-0.8,-8])]) 71 lm8 = np.array([1e-4*np.array([9,-0.9,-9]),1e-6*np.array([9,-0.9,-9]),1e-5*np.array([9,-0.9,-9])]) 72 lm9 = np.array([1e-4*np.array([10,-1.0,-10]),1e-6*np.array([10,-1.0,-10]),1e-5*np.array([10,-1.0,-10])]) 73 lm10 = np.array([1e-4*np.array([11,-1.1,-11]),1e-6*np.array([11,-1.1,-11]),1e-5*np.array([11,-1.1,-11])]) 74 lm11 = np.array([1e-4*np.array([12,-1.2,-12]),1e-6*np.array([12,-1.2,-12]),1e-5*np.array([12,-1.2,-12])]) 75 md.smb.lapserates = np.stack((lm0,lm1,lm2,lm3,lm4,lm5,lm6,lm7,lm8,lm9,lm10,lm11),axis=2) 76 ebins = np.array([[100,300],[200,400],[250,450]]) 77 md.smb.elevationbins = np.stack([ebins for ii in range(12)],axis=2) 78 64 79 65 80 # Stochastic forcing … … 90 105 md.results.TransientSolution[0].IceVolume, 91 106 md.results.TransientSolution[0].SmbMassBalance, 92 md.results.TransientSolution[1 ].Vx,93 md.results.TransientSolution[1 ].Vy,94 md.results.TransientSolution[1 ].Vel,95 md.results.TransientSolution[1 ].Thickness,96 md.results.TransientSolution[1 ].IceVolume,97 md.results.TransientSolution[1 ].SmbMassBalance,98 md.results.TransientSolution[ 6].Vx,99 md.results.TransientSolution[ 6].Vy,100 md.results.TransientSolution[ 6].Vel,101 md.results.TransientSolution[ 6].Thickness,102 md.results.TransientSolution[ 6].IceVolume,103 md.results.TransientSolution[ 6].SmbMassBalance107 md.results.TransientSolution[11].Vx, 108 md.results.TransientSolution[11].Vy, 109 md.results.TransientSolution[11].Vel, 110 md.results.TransientSolution[11].Thickness, 111 md.results.TransientSolution[11].IceVolume, 112 md.results.TransientSolution[11].SmbMassBalance, 113 md.results.TransientSolution[23].Vx, 114 md.results.TransientSolution[23].Vy, 115 md.results.TransientSolution[23].Vel, 116 md.results.TransientSolution[23].Thickness, 117 md.results.TransientSolution[23].IceVolume, 118 md.results.TransientSolution[23].SmbMassBalance 104 119 ]
Note:
See TracChangeset
for help on using the changeset viewer.