Changeset 27167
- Timestamp:
- 08/01/22 06:36:56 (3 years ago)
- Location:
- issm/trunk-jpl/test/NightlyRun
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/test/NightlyRun/runme.py
r27011 r27167 365 365 field = field.T 366 366 if np.shape(field) != np.shape(archive): 367 raise RuntimeError("Field '{}' from test is malformed; shape is {}, should be {} or {}".format(archive_name, np.shape(field.T), np.shape(archive), np.shape(archive.T)))367 raise RuntimeError("Field '{}' from test {} is malformed; shape is {}, should be {} or {}".format(fieldname, archive_name[7:], np.shape(field.T), np.shape(archive), np.shape(archive.T))) 368 368 369 369 error_diff = np.amax(np.abs(archive - field), axis=0) / (np.amax(np.abs(archive), axis=0) + float_info.epsilon) -
issm/trunk-jpl/test/NightlyRun/test2004.m
r26800 r27167 7 7 %}}} 8 8 9 %create sealevel model to hold our information: 9 %create sealevel model to hold our information: 10 10 sl=sealevelmodel(); 11 11 12 %Create basins using boundaries from shapefile: 12 %Create basins using boundaries from shapefile: 13 13 %some projections we'll rely on: %{{{ 14 14 proj4326=epsg2proj(4326); … … 71 71 %Go through basins and mesh: %{{{ 72 72 %meshing parameters: {{{ 73 hmin=500; hmax=700; hmin=hmin*1000; hmax=hmax*1000; 73 hmin=500; hmax=700; hmin=hmin*1000; hmax=hmax*1000; 74 74 tolerance=100; %tolerance of 100m on Earth position when merging 3d meshes 75 75 threshold=5; 76 defaultoptions={'KeepVertices',0,'MaxCornerAngle',0.0000000001,'NoBoundaryRefinement',1}; 76 defaultoptions={'KeepVertices',0,'MaxCornerAngle',0.0000000001,'NoBoundaryRefinement',1}; 77 77 alreadyloaded=0; 78 78 %}}} … … 82 82 disp(sprintf('Meshing basin %s\n',bas.name)); 83 83 84 %recover basin domain: 84 %recover basin domain: 85 85 domain=bas.contour(); 86 86 … … 92 92 %plotmodel(md,'data','mesh');pause(1); 93 93 94 %miscellaneous: 94 %miscellaneous: 95 95 md.mesh.proj=bas.proj; 96 96 md.miscellaneous.name=bas.name; 97 97 98 %recover mask where we have land: 98 %recover mask where we have land: 99 99 md.private.bamg.landmask=double(md.private.bamg.mesh.Triangles(:,4)>=1); 100 100 … … 107 107 %}}} 108 108 109 %Parameterization: 109 %Parameterization: 110 110 %Parameterize ice sheets : {{{ 111 111 for ind=sl.basinindx('continent',{'antarctica'}), … … 113 113 114 114 md=sl.icecaps{ind}; 115 bas=sl.basins{ind}; 115 bas=sl.basins{ind}; 116 116 %masks : %{{{ 117 %ice levelset from domain outlines: 117 %ice levelset from domain outlines: 118 118 md.mask.ice_levelset=-ones(md.mesh.numberofvertices,1); 119 120 if bas.isnameany('antarctica-grounded'), 119 120 if bas.isnameany('antarctica-grounded'), 121 121 md.mask.ocean_levelset=ones(md.mesh.numberofvertices,1); 122 122 end 123 if bas.isnameany('ronne','ross'), 123 if bas.isnameany('ronne','ross'), 124 124 md.mask.ocean_levelset=-ones(md.mesh.numberofvertices,1); 125 125 end … … 161 161 % index=delaunayn(points); 162 162 index=BamgTriangulate(longAIS, latAIS); 163 lat=md.mesh.lat; 163 lat=md.mesh.lat; 164 164 long=md.mesh.long+360; 165 165 pos=find(long>360); … … 195 195 bas=sl.basins{ind}; 196 196 197 %recover lat,long: 197 %recover lat,long: 198 198 [md.mesh.long,md.mesh.lat]=gdaltransform(md.mesh.x,md.mesh.y,md.mesh.proj,'EPSG:4326'); 199 199 200 200 %mask: %{{{ 201 %Figure out mask from initial mesh: deal with land and ocean masks (land 201 %Figure out mask from initial mesh: deal with land and ocean masks (land 202 202 %includes grounded ice). %{{{ 203 203 %first, transform land element mask into vertex-driven one … … 213 213 sumconnectedisonocean=sum(connectedisonocean,2); 214 214 215 %figure out which land elements are connected to the ocean: 215 %figure out which land elements are connected to the ocean: 216 216 landelsconocean=landels(find(sumconnectedisonocean)); 217 217 … … 223 223 md.mesh.elements(landelsconocean,1)]; 224 224 225 %edge ind1 and ind2: 225 %edge ind1 and ind2: 226 226 for i=1:length(ind1), 227 227 els1=md.mesh.vertexconnectivity(ind1(i),1: md.mesh.vertexconnectivity(ind1(i),end)); … … 230 230 231 231 if length(find(land(els)))==1, 232 %this edge is on the beach, 0 the edge: 232 %this edge is on the beach, 0 the edge: 233 233 land_mask(ind1(i))=0; 234 234 land_mask(ind2(i))=0; … … 237 237 238 238 md.mask.ocean_levelset=land_mask; 239 md.mask.ice_levelset=ones(md.mesh.numberofvertices,1); %if there are glaciers, we'll adjust 239 md.mask.ice_levelset=ones(md.mesh.numberofvertices,1); %if there are glaciers, we'll adjust 240 240 241 241 if testagainst2002, … … 251 251 md.masstransport.spcthickness=zeros(md.mesh.numberofvertices,1); 252 252 253 if testagainst2002, 253 if testagainst2002, 254 254 % {{{ 255 255 %greenland … … 261 261 %md.masstransport.spcthickness(pos)=-100*ratio; 262 262 263 %correct mask: 263 %correct mask: 264 264 md.mask.ice_levelset(md.mesh.elements(pos,:))=-1; 265 265 % }}} … … 281 281 delHGLA=sum(delH(:,3:end),2); 282 282 index=BamgTriangulate(longGLA, latGLA); 283 lat=md.mesh.lat; 284 long=md.mesh.long+360; 283 lat=md.mesh.lat; 284 long=md.mesh.long+360; 285 285 pos=find(long>360); 286 286 long(pos)=long(pos)-360; … … 292 292 md.masstransport.spcthickness(pos)= md.masstransport.spcthickness(pos)-delHGLA(pos)/100; 293 293 294 %adjust mask accordingly: 295 pos=find(md.masstransport.spcthickness); 294 %adjust mask accordingly: 295 pos=find(md.masstransport.spcthickness); 296 296 md.mask.ice_levelset(pos)=-1; 297 297 md.mask.ocean_levelset(pos)=1; … … 322 322 %%Assemble Earth in 3D {{{ 323 323 324 %parameters: 324 %parameters: 325 325 plotting=0; 326 326 tolerance=100; 327 loneedgesdetect=0; 328 329 %create Earth model by concatenating all the icecaps in 3D: 327 loneedgesdetect=0; 328 329 %create Earth model by concatenating all the icecaps in 3D: 330 330 sl.caticecaps('tolerance',tolerance,'loneedgesdetect',loneedgesdetect); 331 331 332 %figure out how each icecap's mesh connects to the larger Earth mesh: 332 %figure out how each icecap's mesh connects to the larger Earth mesh: 333 333 sl.intersections('force',1); 334 334 335 %figure out connectivity: 335 %figure out connectivity: 336 336 disp('Mesh connectivity'); 337 337 sl.earth.mesh.vertexconnectivity=NodeConnectivity(sl.earth.mesh.elements,sl.earth.mesh.numberofvertices); … … 341 341 sl.earth.mesh.area=averaging(sl.earth,GetAreas3DTria(sl.earth.mesh.elements,sl.earth.mesh.x,sl.earth.mesh.y,sl.earth.mesh.z),4); 342 342 343 %transfer a list of fields from each icecap and continent back to Earth: 343 %transfer a list of fields from each icecap and continent back to Earth: 344 344 sl.transfer('mask.ice_levelset'); 345 345 sl.transfer('mask.ocean_levelset'); … … 355 355 sl.transfer('dsl.sea_water_pressure_at_sea_floor'); 356 356 357 %radius: 357 %radius: 358 358 sl.earth.mesh.r=sqrt(sl.earth.mesh.x.^2+sl.earth.mesh.y.^2+sl.earth.mesh.z.^2); 359 359 … … 373 373 md=sl.earth; %we don't do computations on ice sheets or land. 374 374 375 %Materials: 375 %Materials: 376 376 md.materials=materials('hydro'); 377 377 378 %elastic loading from love numbers: 378 %elastic loading from love numbers: 379 379 md.solidearth.lovenumbers=lovenumbers('maxdeg',100); 380 md.solidearth.settings.ocean_area_scaling = 0; 380 md.solidearth.settings.ocean_area_scaling = 0; 381 381 382 382 %Miscellaneous … … 395 395 md.timestepping.time_step=1; 396 396 397 %Physics: 398 md.transient.issmb=0; 397 %Physics: 398 md.transient.issmb=0; 399 399 md.transient.isstressbalance=0; 400 400 md.transient.isthermal=0; … … 402 402 md.transient.isslc=1; 403 403 404 %Initializations: 404 %Initializations: 405 405 md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1); 406 406 md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1); -
issm/trunk-jpl/test/NightlyRun/test2004.py
r26840 r27167 2 2 # 3 3 # TODO: 4 # - Save boundaries by name to some data structure with tag so that they can be 5 # copied to basins that use identical shapefiles and projections (will need 6 # to check if the cost of the additional structure, checks, and copying are 4 # - Save boundaries by name to some data structure with tag so that they can be 5 # copied to basins that use identical shapefiles and projections (will need 6 # to check if the cost of the additional structure, checks, and copying are 7 7 # greater than the cost of projecting). 8 8 # … … 41 41 #HemisphereWest #{{{ 42 42 sl.addbasin( 43 basin('continent', 'hemispherewest', 'name', 'hemispherewest', 'proj', laea(0, -90), 'boundaries', [ # Peru projection 358743 basin('continent', 'hemispherewest', 'name', 'hemispherewest', 'proj', laea(0, -90), 'boundaries', [ # Peru projection 3587 44 44 boundary('shppath', shppath, 'shpfilename', 'HemisphereSplit', 'proj', proj4326, 'orientation', 'reverse'), 45 45 boundary('shppath', shppath, 'shpfilename', 'NorthAntarctica', 'proj', proj3031), … … 49 49 boundary('shppath', shppath, 'shpfilename', 'RonneWestSummit', 'proj', proj3031), 50 50 boundary('shppath', shppath, 'shpfilename', 'WestAntarctica2', 'proj', proj3031, 'orientation', 'reverse'), 51 boundary('shppath', shppath, 'shpfilename', 'SouthAntarctica', 'proj', proj3031) 52 ] 51 boundary('shppath', shppath, 'shpfilename', 'SouthAntarctica', 'proj', proj3031)] 53 52 ) 54 53 ) … … 59 58 boundary('shppath', shppath, 'shpfilename', 'SouthAntarctica', 'proj', proj3031), 60 59 boundary('shppath', shppath, 'shpfilename', 'RossIceShelf', 'proj', proj3031), 61 boundary('shppath', shppath, 'shpfilename', 'RossWestFront','proj', proj3031), 62 boundary('shppath', shppath, 'shpfilename', 'RossFront', 'proj', proj3031, 'orientation', 'reverse') 63 ] 60 boundary('shppath', shppath, 'shpfilename', 'RossWestFront', 'proj', proj3031), 61 boundary('shppath', shppath, 'shpfilename', 'RossFront', 'proj', proj3031, 'orientation', 'reverse')] 64 62 ) 65 63 ) … … 67 65 #HemisphereEast: {{{ 68 66 sl.addbasin( 69 basin('continent', 'hemisphereeast', 'name', 'hemisphereeast', 'proj', laea(0, +90), 'boundaries', [ #Australian projection lat, long67 basin('continent', 'hemisphereeast', 'name', 'hemisphereeast', 'proj', laea(0, +90), 'boundaries', [ #Australian projection lat, long 70 68 boundary('shppath', shppath, 'shpfilename', 'HemisphereSplit', 'proj', proj4326), 71 69 boundary('shppath', shppath, 'shpfilename', 'SouthAntarctica', 'proj', proj3031), 72 boundary('shppath', shppath, 'shpfilename', 'RossFront', 'proj', proj3031),70 boundary('shppath', shppath, 'shpfilename', 'RossFront', 'proj', proj3031), 73 71 boundary('shppath', shppath, 'shpfilename', 'RossWestFront', 'proj', proj3031), 74 boundary('shppath', shppath, 'shpfilename', 'EastAntarctica2', 'proj', proj3031,'orientation', 'reverse'), 75 boundary('shppath', shppath, 'shpfilename', 'NorthAntarctica', 'proj', proj3031) 76 ] 72 boundary('shppath', shppath, 'shpfilename', 'EastAntarctica2', 'proj', proj3031, 'orientation', 'reverse'), 73 boundary('shppath', shppath, 'shpfilename', 'NorthAntarctica', 'proj', proj3031)] 77 74 ) 78 75 ) … … 90 87 boundary('shppath', shppath, 'shpfilename', 'RonneIceShelf', 'proj', proj3031), 91 88 boundary('shppath', shppath, 'shpfilename', 'RonneEastSummit', 'proj', proj3031), 92 boundary('shppath', shppath, 'shpfilename', 'RonneBrunt', 'proj', proj3031) 93 ] 89 boundary('shppath', shppath, 'shpfilename', 'RonneBrunt', 'proj', proj3031)] 94 90 ) 95 91 ) … … 101 97 boundary('shppath', shppath, 'shpfilename', 'RonneIceShelf', 'proj', proj3031), 102 98 boundary('shppath', shppath, 'shpfilename', 'RonneEastSummit', 'proj', proj3031), 103 boundary('shppath', shppath, 'shpfilename', 'RonneFront', 'proj', proj3031, 'orientation', 'reverse') 104 ] 99 boundary('shppath', shppath, 'shpfilename', 'RonneFront', 'proj', proj3031, 'orientation', 'reverse')] 105 100 ) 106 101 ) … … 114 109 hmin = hmin * 1000 115 110 hmax = hmax * 1000 116 tolerance = 100 # tolerance of 100m on Earth position when merging 3d meshes111 tolerance = 100 # tolerance of 100m on Earth position when merging 3d meshes 117 112 threshold = 5 118 defaultoptions = [ 119 'KeepVertices', 0, 120 'MaxCornerAngle', 0.0000000001, 121 'NoBoundaryRefinement', 1 122 ] 113 defaultoptions = ['KeepVertices', 0, 114 'MaxCornerAngle', 0.0000000001, 115 'NoBoundaryRefinement', 1] 123 116 alreadyloaded = 0 124 117 #}}} … … 134 127 135 128 # Mesh 136 md = bamg(model(), 'domain', domain, 'subdomains', coastline, 'hmin', hmin, 'hmax', hmax, *defaultoptions) # NOTE: Unpacking defaultoptions with '*'129 md = bamg(model(), 'domain', domain, 'subdomains', coastline, 'hmin', hmin, 'hmax', hmax, *defaultoptions) # NOTE: Unpacking defaultoptions with '*' 137 130 138 131 # Miscellaneous … … 254 247 landelsconocean = landels[np.nonzero(sumconnectedisonocean)[0]] 255 248 256 ind1 = np.hstack(( 257 md.mesh.elements[landelsconocean, 0], 258 md.mesh.elements[landelsconocean, 1], 259 md.mesh.elements[landelsconocean, 2] 260 )) 261 ind2 = np.hstack(( 262 md.mesh.elements[landelsconocean, 1], 263 md.mesh.elements[landelsconocean, 2], 264 md.mesh.elements[landelsconocean, 0] 265 )) 249 ind1 = np.hstack((md.mesh.elements[landelsconocean, 0], 250 md.mesh.elements[landelsconocean, 1], 251 md.mesh.elements[landelsconocean, 2])) 252 ind2 = np.hstack((md.mesh.elements[landelsconocean, 1], 253 md.mesh.elements[landelsconocean, 2], 254 md.mesh.elements[landelsconocean, 0])) 266 255 267 256 # Edge ind1 and ind2 … … 325 314 delHGLA = InterpFromMeshToMesh2d(index, longGLA, latGLA, delHGLA, longe, late) 326 315 327 # NOTE: For some reason, cannot apply pos to multiple arrays in a 328 # singlelike we might do in MATLAB. Instead, we iterate over 316 # NOTE: For some reason, cannot apply pos to multiple arrays in a 317 # singlelike we might do in MATLAB. Instead, we iterate over 329 318 # elements of pos. 330 319 # … … 461 450 md.solidearth.settings.rotation = 0 462 451 md.solidearth.settings.viscous = 0 463 md.solidearth.requested_outputs = [ 464 'default', 465 'DeltaIceThickness', 466 'Sealevel', 467 'Bed', 468 'SealevelBarystaticIceMask', 469 'SealevelBarystaticOceanMask', 470 ] 452 md.solidearth.requested_outputs = ['default', 453 'DeltaIceThickness', 454 'Sealevel', 455 'Bed', 456 'SealevelBarystaticIceMask', 457 'SealevelBarystaticOceanMask'] 471 458 md = solve(md, 'Transient') 472 459 Seustatic = md.results.TransientSolution.Sealevel -
issm/trunk-jpl/test/NightlyRun/test243.py
r26271 r27167 2 2 from socket import gethostname 3 3 import sys 4 5 4 import numpy as np 6 7 5 from model import * 8 6 from parameterize import * … … 44 42 45 43 #smb settings 46 md.smb.requested_outputs = [ 47 'SmbDz','SmbT','SmbD','SmbRe','SmbGdn','SmbGsp','SmbEC', 48 'SmbA','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC','SmbMeanSHF','SmbMeanLHF', 49 'SmbMeanULW','SmbNetLW','SmbNetSW','SmbWAdd','SmbRunoff','SmbRefreeze','SmbMelt', 50 'SmbEC','SmbPrecipitation','SmbRain','SmbAccumulatedMassBalance','SmbAccumulatedRunoff', 51 'SmbAccumulatedMelt','SmbAccumulatedEC','SmbAccumulatedPrecipitation','SmbAccumulatedRain', 52 'SmbAccumulatedPrecipitation','SmbAccumulatedRefreeze' 53 ] 44 md.smb.requested_outputs = ['SmbDz','SmbT','SmbD','SmbRe','SmbGdn','SmbGsp','SmbEC', 45 'SmbA','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC','SmbMeanSHF','SmbMeanLHF', 46 'SmbMeanULW','SmbNetLW','SmbNetSW','SmbWAdd','SmbRunoff','SmbRefreeze','SmbMelt', 47 'SmbEC','SmbPrecipitation','SmbRain','SmbAccumulatedMassBalance','SmbAccumulatedRunoff', 48 'SmbAccumulatedMelt','SmbAccumulatedEC','SmbAccumulatedPrecipitation','SmbAccumulatedRain', 49 'SmbAccumulatedPrecipitation','SmbAccumulatedRefreeze'] 54 50 55 51 #only run smb core: … … 72 68 73 69 #Fields and tolerances to track changes 74 field_names = ['Layers', 'SmbDz','SmbT','SmbD','SmbRe','SmbGdn','SmbGsp','SmbA' ,'SmbEC','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC','SmbMeanSHF','SmbMeanLHF','SmbMeanULW','SmbNetLW','SmbNetSW','SmbAccumulatedMassBalance','SmbAccumulatedRunoff','SmbAccumulatedMelt','SmbAccumulatedEC','SmbAccumulatedPrecipitation','SmbAccumulatedRain','SmbAccumulatedRefreeze','SmbRunoff','SmbMelt','SmbEC','SmbPrecipitation','SmbRain','SmbRefreeze','SmbWAdd']70 field_names = ['Layers', 'SmbDz', 'SmbT', 'SmbD', 'SmbRe', 'SmbGdn', 'SmbGsp', 'SmbA', 'SmbEC', 'SmbMassBalance', 'SmbMAdd', 'SmbDzAdd', 'SmbFAC', 'SmbMeanSHF', 'SmbMeanLHF', 'SmbMeanULW', 'SmbNetLW', 'SmbNetSW', 'SmbAccumulatedMassBalance', 'SmbAccumulatedRunoff', 'SmbAccumulatedMelt', 'SmbAccumulatedEC', 'SmbAccumulatedPrecipitation', 'SmbAccumulatedRain', 'SmbAccumulatedRefreeze', 'SmbRunoff', 'SmbMelt', 'SmbEC', 'SmbPrecipitation', 'SmbRain', 'SmbRefreeze', 'SmbWAdd'] 75 71 field_tolerances = [1e-12, 2e-12, 1e-12, 2e-11, 1e-11, 2e-11, 1e-11, 1e-12, 1e-11, 1e-12, 1e-12, 1e-12, 1e-11, 2e-11, 2e-11, 1e-11, 9e-10, 2e-11, 1e-11, 9e-10, 2e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11] 76 72 -
issm/trunk-jpl/test/NightlyRun/test252.py
r26897 r27167 79 79 'SmbDz3', 'SmbT3', 'SmbD3', 'SmbRe3', 'SmbGdn3', 'SmbGsp3', 'SmbA3', 'SmbEC3', 'SmbMassBalance3', 'SmbMAdd3', 'SmbDzAdd3', 'SmbFAC3', 80 80 'SmbDz4', 'SmbT4', 'SmbD4', 'SmbRe4', 'SmbGdn4', 'SmbGsp4', 'SmbA4', 'SmbEC4', 'SmbMassBalance4', 'SmbMAdd4', 'SmbDzAdd4', 'SmbFAC4'] 81 field_tolerances = [ 82 1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12, 83 1e-12,1e-12,1e-11,1e-10,2e-11,1e-11,1e-12,1e-11,1e-12,1e-12,1e-12,1e-11, 84 1e-12,1e-12,2e-12,2e-11,4e-11,1e-11,1e-12,1e-11,1e-11,1e-12,1e-12,1e-11, 85 1e-11,1e-11,4e-11,4e-11,1e-12,4e-11,1e-12,3e-12,1e-10,1e-12,1e-12,2e-11 86 ] 81 field_tolerances = [1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 1e-12, 82 1e-12, 1e-12, 1e-11, 1e-10, 2e-11, 1e-11, 1e-12, 1e-11, 1e-12, 1e-12, 1e-12, 1e-11, 83 1e-12, 1e-12, 2e-12, 2e-11, 4e-11, 1e-11, 1e-12, 1e-11, 1e-11, 1e-12, 1e-12, 1e-11, 84 1e-11, 1e-11, 4e-11, 4e-11, 1e-12, 4e-11, 1e-12, 3e-12, 1e-10, 1e-12, 1e-12, 2e-11] 87 85 # Shape is different in python solution (fixed using reshape) which can cause test failure 88 field_values = [ 89 nlayers, 90 md.results.TransientSolution[0].SmbDz[0, 0:nlayers].reshape(1, -1), 91 md.results.TransientSolution[0].SmbT[0, 0:nlayers].reshape(1, -1), 92 md.results.TransientSolution[0].SmbD[0, 0:nlayers].reshape(1, -1), 93 md.results.TransientSolution[0].SmbRe[0, 0:nlayers].reshape(1, -1), 94 md.results.TransientSolution[0].SmbGdn[0, 0:nlayers].reshape(1, -1), 95 md.results.TransientSolution[0].SmbGsp[0, 0:nlayers].reshape(1, -1), 96 md.results.TransientSolution[0].SmbA[0, 0:nlayers].reshape(1, -1), 97 md.results.TransientSolution[0].SmbEC[0], 98 md.results.TransientSolution[0].SmbMassBalance[0], 99 md.results.TransientSolution[0].SmbMAdd[0], 100 md.results.TransientSolution[0].SmbDzAdd[0], 101 md.results.TransientSolution[0].SmbFAC[0], 102 md.results.TransientSolution[145].SmbDz[0, 0:nlayers].reshape(1, -1), 103 md.results.TransientSolution[145].SmbT[0, 0:nlayers].reshape(1, -1), 104 md.results.TransientSolution[145].SmbD[0, 0:nlayers].reshape(1, -1), 105 md.results.TransientSolution[145].SmbRe[0, 0:nlayers].reshape(1, -1), 106 md.results.TransientSolution[145].SmbGdn[0, 0:nlayers].reshape(1, -1), 107 md.results.TransientSolution[145].SmbGsp[0, 0:nlayers].reshape(1, -1), 108 md.results.TransientSolution[145].SmbA[0, 0:nlayers].reshape(1, -1), 109 md.results.TransientSolution[145].SmbEC[0], 110 md.results.TransientSolution[145].SmbMassBalance[0], 111 md.results.TransientSolution[145].SmbMAdd[0], 112 md.results.TransientSolution[145].SmbDzAdd[0], 113 md.results.TransientSolution[145].SmbFAC[0], 114 md.results.TransientSolution[146].SmbDz[0, 0:nlayers].reshape(1, -1), 115 md.results.TransientSolution[146].SmbT[0, 0:nlayers].reshape(1, -1), 116 md.results.TransientSolution[146].SmbD[0, 0:nlayers].reshape(1, -1), 117 md.results.TransientSolution[146].SmbRe[0, 0:nlayers].reshape(1, -1), 118 md.results.TransientSolution[146].SmbGdn[0, 0:nlayers].reshape(1, -1), 119 md.results.TransientSolution[146].SmbGsp[0, 0:nlayers].reshape(1, -1), 120 md.results.TransientSolution[146].SmbA[0, 0:nlayers].reshape(1, -1), 121 md.results.TransientSolution[146].SmbEC[0], 122 md.results.TransientSolution[146].SmbMassBalance[0], 123 md.results.TransientSolution[146].SmbMAdd[0], 124 md.results.TransientSolution[146].SmbDzAdd[0], 125 md.results.TransientSolution[146].SmbFAC[0], 126 md.results.TransientSolution[-1].SmbDz[0, 0:nlayers].reshape(1, -1), 127 md.results.TransientSolution[-1].SmbT[0, 0:nlayers].reshape(1, -1), 128 md.results.TransientSolution[-1].SmbD[0, 0:nlayers].reshape(1, -1), 129 md.results.TransientSolution[-1].SmbRe[0, 0:nlayers].reshape(1, -1), 130 md.results.TransientSolution[-1].SmbGdn[0, 0:nlayers].reshape(1, -1), 131 md.results.TransientSolution[-1].SmbGsp[0, 0:nlayers].reshape(1, -1), 132 md.results.TransientSolution[-1].SmbA[0, 0:nlayers].reshape(1, -1), 133 md.results.TransientSolution[-1].SmbEC[0], 134 md.results.TransientSolution[-1].SmbMassBalance[0], 135 md.results.TransientSolution[-1].SmbMAdd[0], 136 md.results.TransientSolution[-1].SmbDzAdd[0], 137 md.results.TransientSolution[-1].SmbFAC[0] 138 ] 86 field_values = [nlayers, 87 md.results.TransientSolution[0].SmbDz[0, 0:nlayers].reshape(1, -1), 88 md.results.TransientSolution[0].SmbT[0, 0:nlayers].reshape(1, -1), 89 md.results.TransientSolution[0].SmbD[0, 0:nlayers].reshape(1, -1), 90 md.results.TransientSolution[0].SmbRe[0, 0:nlayers].reshape(1, -1), 91 md.results.TransientSolution[0].SmbGdn[0, 0:nlayers].reshape(1, -1), 92 md.results.TransientSolution[0].SmbGsp[0, 0:nlayers].reshape(1, -1), 93 md.results.TransientSolution[0].SmbA[0, 0:nlayers].reshape(1, -1), 94 md.results.TransientSolution[0].SmbEC[0], 95 md.results.TransientSolution[0].SmbMassBalance[0], 96 md.results.TransientSolution[0].SmbMAdd[0], 97 md.results.TransientSolution[0].SmbDzAdd[0], 98 md.results.TransientSolution[0].SmbFAC[0], 99 md.results.TransientSolution[145].SmbDz[0, 0:nlayers].reshape(1, -1), 100 md.results.TransientSolution[145].SmbT[0, 0:nlayers].reshape(1, -1), 101 md.results.TransientSolution[145].SmbD[0, 0:nlayers].reshape(1, -1), 102 md.results.TransientSolution[145].SmbRe[0, 0:nlayers].reshape(1, -1), 103 md.results.TransientSolution[145].SmbGdn[0, 0:nlayers].reshape(1, -1), 104 md.results.TransientSolution[145].SmbGsp[0, 0:nlayers].reshape(1, -1), 105 md.results.TransientSolution[145].SmbA[0, 0:nlayers].reshape(1, -1), 106 md.results.TransientSolution[145].SmbEC[0], 107 md.results.TransientSolution[145].SmbMassBalance[0], 108 md.results.TransientSolution[145].SmbMAdd[0], 109 md.results.TransientSolution[145].SmbDzAdd[0], 110 md.results.TransientSolution[145].SmbFAC[0], 111 md.results.TransientSolution[146].SmbDz[0, 0:nlayers].reshape(1, -1), 112 md.results.TransientSolution[146].SmbT[0, 0:nlayers].reshape(1, -1), 113 md.results.TransientSolution[146].SmbD[0, 0:nlayers].reshape(1, -1), 114 md.results.TransientSolution[146].SmbRe[0, 0:nlayers].reshape(1, -1), 115 md.results.TransientSolution[146].SmbGdn[0, 0:nlayers].reshape(1, -1), 116 md.results.TransientSolution[146].SmbGsp[0, 0:nlayers].reshape(1, -1), 117 md.results.TransientSolution[146].SmbA[0, 0:nlayers].reshape(1, -1), 118 md.results.TransientSolution[146].SmbEC[0], 119 md.results.TransientSolution[146].SmbMassBalance[0], 120 md.results.TransientSolution[146].SmbMAdd[0], 121 md.results.TransientSolution[146].SmbDzAdd[0], 122 md.results.TransientSolution[146].SmbFAC[0], 123 md.results.TransientSolution[-1].SmbDz[0, 0:nlayers].reshape(1, -1), 124 md.results.TransientSolution[-1].SmbT[0, 0:nlayers].reshape(1, -1), 125 md.results.TransientSolution[-1].SmbD[0, 0:nlayers].reshape(1, -1), 126 md.results.TransientSolution[-1].SmbRe[0, 0:nlayers].reshape(1, -1), 127 md.results.TransientSolution[-1].SmbGdn[0, 0:nlayers].reshape(1, -1), 128 md.results.TransientSolution[-1].SmbGsp[0, 0:nlayers].reshape(1, -1), 129 md.results.TransientSolution[-1].SmbA[0, 0:nlayers].reshape(1, -1), 130 md.results.TransientSolution[-1].SmbEC[0], 131 md.results.TransientSolution[-1].SmbMassBalance[0], 132 md.results.TransientSolution[-1].SmbMAdd[0], 133 md.results.TransientSolution[-1].SmbDzAdd[0], 134 md.results.TransientSolution[-1].SmbFAC[0]]
Note:
See TracChangeset
for help on using the changeset viewer.