Index: ../trunk-jpl/test/Archives/Archive543.arch =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: ../trunk-jpl/test/NightlyRun/test543.m =================================================================== --- ../trunk-jpl/test/NightlyRun/test543.m (revision 26664) +++ ../trunk-jpl/test/NightlyRun/test543.m (revision 26665) @@ -1,4 +1,4 @@ -%Test Name: PigTranFrontalforcingsrignotautoregression +%Test Name: PigTranStochasticforcing md=triangle(model(),'../Exp/Pig.exp',10000.); md=setmask(md,'../Exp/PigShelves.exp','../Exp/PigIslands.exp'); md=parameterize(md,'../Par/Pig.par'); @@ -5,28 +5,48 @@ md=setflowequation(md,'SSA','all'); md.timestepping.start_time = 0; md.timestepping.time_step = 1; -md.timestepping.final_time = 25; +md.timestepping.final_time = 10; -%separate domain in 2 basins -idbasin = zeros(md.mesh.numberofelements,1); +%Basin separation TF +idb_tf = zeros(md.mesh.numberofelements,1); iid1 = find(md.mesh.x<=-1.6e6); for ii=1:md.mesh.numberofelements for vertex=1:3 if any(iid1==md.mesh.elements(ii,vertex)) %one vertex in basin 1 - idbasin(ii) = 1; + idb_tf(ii) = 1; end end - if idbasin(ii)==0 %no vertex was found in basin 1 - idbasin(ii) = 2; + if idb_tf(ii)==0 %no vertex was found in basin 1 + idb_tf(ii) = 2; end end +% Basin separation default +idb_df = zeros(md.mesh.numberofelements,1); +iid1 = find(md.mesh.x<=-1.62e6); +for ii=1:md.mesh.numberofelements + for vertex=1:3 + if any(iid1==md.mesh.elements(ii,vertex)) %one vertex in basin 1 + idb_df(ii) = 1; + end + end + if idb_df(ii)==0 %no vertex was found in basin 1 + idb_df(ii) = 2; + end +end +% Dimensionalities +nb_tf = 2; +nb_clv = 2; +nb_flmlt = 2; -%calving and frontalforcings parameters +%Calving parameters md.mask.ice_levelset = 1e4*(md.mask.ice_levelset + 0.5); -md.calving=calvingvonmises(); +md.calving.calvingrate = 0.3*ones(md.mesh.numberofvertices,1); +md.levelset.spclevelset = NaN(md.mesh.numberofvertices,1); +md.levelset.migration_max = 10.0; %avoid fast advance/retreat of the front +%Frontal forcing parameters md.frontalforcings=frontalforcingsrignotautoregression(); -md.frontalforcings.num_basins = 2; -md.frontalforcings.basin_id = idbasin; +md.frontalforcings.num_basins = nb_tf; +md.frontalforcings.basin_id = idb_tf; md.frontalforcings.subglacial_discharge = 0.1*ones(md.mesh.numberofvertices,1); md.frontalforcings.beta0 = [0.05,0.01]; %intercept values of TF in basins [C] md.frontalforcings.beta1 = [0.001,0.0001]; %trend values of TF in basins [C/yr] @@ -35,57 +55,65 @@ md.frontalforcings.ar_timestep = 2; %timestep of the autoregressive model [yr] md.frontalforcings.phi = [[0.1,-0.1,0.01,-0.01];[0.2,-0.2,0.1,0.0]]; %autoregressive parameters +% Floating Ice Melt parameters +md.basalforcings.floatingice_melting_rate = 0.1*ones(md.mesh.numberofvertices,1); + +% Covariance matrix +covtf = 1e-4*eye(nb_tf); +covclv = 1e-1*eye(nb_clv); +covclv(1,1) = 1/10*covclv(1,1); +covflmlt = 0.05*eye(nb_flmlt); +covglob = blkdiag(covtf,covclv,covflmlt); + %Stochastic forcing md.stochasticforcing.isstochasticforcing = 1; -md.stochasticforcing.fields = [{'FrontalForcingsRignotAutoregression'}]; -md.stochasticforcing.covariance = 1e-4*[[1.5,0.5];[0.5,0.4]]; %global covariance among- and between-fields +md.stochasticforcing.fields = [{'FrontalForcingsRignotAutoregression'},{'DefaultCalving'},{'FloatingMeltRate'}]; +md.stochasticforcing.defaultdimension = 2; +md.stochasticforcing.default_id = idb_df; +md.stochasticforcing.covariance = covglob; %global covariance among- and between-fields md.stochasticforcing.randomflag = 0; %determines true/false randomness -md.transient.ismovingfront = 1; -md.levelset.spclevelset = NaN(md.mesh.numberofvertices,1); -md.levelset.migration_max = 1e10; +md.transient.ismovingfront = 1; +md.transient.isgroundingline = 1; -md.transient.requested_outputs = {'default','CalvingMeltingrate'}; +md.transient.requested_outputs = {'default','CalvingCalvingrate','CalvingMeltingrate','BasalforcingsFloatingiceMeltingRate'}; md.cluster=generic('name',oshostname(),'np',2); md=solve(md,'Transient'); %Fields and tolerances to track changes field_names ={... - 'Vx1' ,'Vy1' ,'Vel1' ,'Pressure1' ,'Bed1' ,'Surface1' ,'Thickness1' ,'MaskIceLevelset1', 'CalvingMeltingrate1',... - 'Vx2' ,'Vy2' ,'Vel2' ,'Pressure2' ,'Bed2' ,'Surface2' ,'Thickness2' ,'MaskIceLevelset2', 'CalvingMeltingrate2',... - 'Vx10','Vy10','Vel10','Pressure10','Bed10','Surface10','Thickness10','MaskIceLevelset10', 'CalvingMeltingrate10',... + 'Vx1' ,'Vy1' ,'Vel1' ,'Thickness1' ,'MaskIceLevelset1' ,'CalvingCalvingrate1' ,'CalvingMeltingrate1' ,'BasalforcingsFloatingiceMeltingRate1',... + 'Vx2' ,'Vy2' ,'Vel2' ,'Thickness2' ,'MaskIceLevelset2' ,'CalvingCalvingrate1' ,'CalvingMeltingrate2' ,'BasalforcingsFloatingiceMeltingRate2',... + 'Vx10','Vy10','Vel10','Thickness10','MaskIceLevelset10','CalvingCalvingrate10','CalvingMeltingrate10','BasalforcingsFloatingiceMeltingRate10',... }; field_tolerances={... - 1e-11,2e-11,2e-11,1e-12,2e-11,6e-12,9e-12,1e-12,1e-9,... - 2e-11,1e-11,1e-11,9e-12,2e-1,2e-11,2e-11,1e-11,1e-9,... - 2e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-9,1e-9,... + 1e-11,2e-11,2e-11,1e-11,1e-9,1e-10,1e-10,1e-10,... + 2e-11,1e-11,1e-11,9e-11,2e-9,1e-10,1e-10,1e-10,... + 2e-10,1e-10,1e-10,1e-10,5e-9,1e-10,1e-10,1e-10,... }; field_values={... (md.results.TransientSolution(1).Vx),... (md.results.TransientSolution(1).Vy),... (md.results.TransientSolution(1).Vel),... - (md.results.TransientSolution(1).Pressure),... - (md.results.TransientSolution(1).Base),... - (md.results.TransientSolution(1).Surface),... (md.results.TransientSolution(1).Thickness),... (md.results.TransientSolution(1).MaskIceLevelset),... + (md.results.TransientSolution(1).CalvingCalvingrate),... (md.results.TransientSolution(1).CalvingMeltingrate),... - (md.results.TransientSolution(2).Vx),... - (md.results.TransientSolution(2).Vy),... - (md.results.TransientSolution(2).Vel),... - (md.results.TransientSolution(2).Pressure),... - (md.results.TransientSolution(2).Base),... - (md.results.TransientSolution(2).Surface),... - (md.results.TransientSolution(2).Thickness),... - (md.results.TransientSolution(2).MaskIceLevelset),... - (md.results.TransientSolution(2).CalvingMeltingrate),... - (md.results.TransientSolution(10).Vx),... - (md.results.TransientSolution(10).Vy),... - (md.results.TransientSolution(10).Vel),... - (md.results.TransientSolution(10).Pressure),... - (md.results.TransientSolution(10).Base),... - (md.results.TransientSolution(10).Surface),... - (md.results.TransientSolution(10).Thickness),... - (md.results.TransientSolution(10).MaskIceLevelset),... - (md.results.TransientSolution(10).CalvingMeltingrate),... - }; + (md.results.TransientSolution(1).BasalforcingsFloatingiceMeltingRate),... + (md.results.TransientSolution(5).Vx),... + (md.results.TransientSolution(5).Vy),... + (md.results.TransientSolution(5).Vel),... + (md.results.TransientSolution(5).Thickness),... + (md.results.TransientSolution(5).MaskIceLevelset),... + (md.results.TransientSolution(5).CalvingCalvingrate),... + (md.results.TransientSolution(5).CalvingMeltingrate),... + (md.results.TransientSolution(5).BasalforcingsFloatingiceMeltingRate),... + (md.results.TransientSolution(10).Vx),... + (md.results.TransientSolution(10).Vy),... + (md.results.TransientSolution(10).Vel),... + (md.results.TransientSolution(10).Thickness),... + (md.results.TransientSolution(10).MaskIceLevelset),... + (md.results.TransientSolution(10).CalvingCalvingrate),... + (md.results.TransientSolution(10).CalvingMeltingrate),... + (md.results.TransientSolution(10).BasalforcingsFloatingiceMeltingRate),... + }; Index: ../trunk-jpl/test/NightlyRun/test543.py =================================================================== --- ../trunk-jpl/test/NightlyRun/test543.py (revision 26664) +++ ../trunk-jpl/test/NightlyRun/test543.py (revision 26665) @@ -1,7 +1,6 @@ -#Test Name: PigTranFrontalforcingsrignotautoregression +#Test Name: PigTranStochasticforcing import numpy as np -from calvingvonmises import * from frontalforcingsrignotautoregression import * from socket import gethostname from model import * @@ -18,25 +17,42 @@ md = setflowequation(md, 'SSA', 'all') md.timestepping.start_time = 0 md.timestepping.time_step = 1 -md.timestepping.final_time = 25 +md.timestepping.final_time = 10 -# Separate domain in 2 basins -idbasin = np.zeros((md.mesh.numberofelements,)) +# Basin separation TF +idb_tf = np.zeros((md.mesh.numberofelements,)) iid1 = np.where(md.mesh.x <= -1.6e6)[0] for ii in range(md.mesh.numberofelements): for vertex in range(3): if md.mesh.elements[ii][vertex] - 1 in iid1: # one vertex in basin 1; NOTE: offset because of 1-based vertex indexing - idbasin[ii] = 1 + idb_tf[ii] = 1 if idbasin[ii] == 0: # no vertex was found in basin 1 for vertex in range(3): - idbasin[ii] = 2 + idb_tf[ii] = 2 +# Basin separation default +idb_df = np.zeros((md.mesh.numberofelements,)) +iid1 = np.where(md.mesh.x <= -1.62e6)[0] +for ii in range(md.mesh.numberofelements): + for vertex in range(3): + if md.mesh.elements[ii][vertex] - 1 in iid1: # one vertex in basin 1; NOTE: offset because of 1-based vertex indexing + idb_df[ii] = 1 + if idbasin[ii] == 0: # no vertex was found in basin 1 + for vertex in range(3): + idb_df[ii] = 2 +#Dimensionalities +nb_tf = 2 +nb_clv = 2 +nb_flmlt = 2 -# Calving and frontalforcings parameters +# Calving parameters md.mask.ice_levelset = 1e4 * (md.mask.ice_levelset + 0.5) -md.calving = calvingvonmises() +md.calving.calvingrate = 0.3*np.ones((md.mesh.numberofvertices,)) +md.levelset.spclevelset = np.full((md.mesh.numberofvertices,), np.nan) +md.levelset.migration_max = 10.0 +#Frontal forcing parameters md.frontalforcings = frontalforcingsrignotautoregression() -md.frontalforcings.num_basins = 2 -md.frontalforcings.basin_id = idbasin - 1 # NOTE: offset because of 1-based vertex indexing +md.frontalforcings.num_basins = nb_tf +md.frontalforcings.basin_id = idb_tf - 1 # NOTE: offset because of 1-based vertex indexing md.frontalforcings.subglacial_discharge = 0.1 * np.ones((md.mesh.numberofvertices,)) md.frontalforcings.beta0 = np.array([[0.05, 0.01]]) # intercept values of TF in basins [C] md.frontalforcings.beta1 = np.array([[0.001, 0.0001]]) # trend values of TF in basins [C/yr] @@ -44,60 +60,69 @@ md.frontalforcings.ar_order = 4 md.frontalforcings.ar_timestep = 2 # timestep of the autoregressive model [yr] md.frontalforcings.phi = np.array([[0.1, -0.1, 0.01, -0.01], [0.2, -0.2, 0.1, 0.0]]) # autoregressive parameters +#Floating Ice Melt parameters +md.basalforcings.floatingice_melting_rate = 0.1*np.ones((md.mesh.numberofvertices,)) +#Covariance matrix +covtf = 1e-4*np.identity(nb_tf) +covclv = 1e-1*np.identity(nb_clv) +covclv[0,0] = 1/10*covclv[0,0] +covflmlt = 0.05*np.identity(nb_flmlt) +covglob = np.zeros([6,6]) +covglob[0:2,0:2] = covtf +covglob[2:4,2:4] = covclv +covglob[4:6,4:6] = covflmlt + # Stochastic forcing md.stochasticforcing.isstochasticforcing = 1 -md.stochasticforcing.fields = ['FrontalForcingsRignotAutoregression'] +md.stochasticforcing.fields = ['FrontalForcingsRignotAutoregression','DefaultCalving','FloatingMeltRate'] +md.stochasticforcing.defauldimension = 2 +md.stochasticforcing.default_id = idb_df +md.stochasticforcing.covariance = covglob # global covariance among- and between-fields +md.stochasticforcing.randomflag = 0 # determines true/false randomness -md.stochasticforcing.covariance = 1e-4 * np.array([[1.5, 0.5], [0.5, 0.4]]) # global covariance among- and between-fields -md.stochasticforcing.randomflag = 0 # determines true/false randomness +md.transient.ismovingfront = 1 +md.transient.isgroundingline = 1 - -md.transient.ismovingfront = 1 -md.levelset.spclevelset = np.full((md.mesh.numberofvertices,), np.nan) -md.levelset.migration_max = 1e10 - -md.transient.requested_outputs = ['default', 'CalvingMeltingrate'] +md.transient.requested_outputs = ['default', 'CalvingCalvingrate','CalvingMeltingrate','BasalforcingsFloatingiceMeltingRate'] md.cluster = generic('name', gethostname(), 'np', 2) md = solve(md, 'Transient') # Fields and tolerances to track changes field_names = [ - 'Vx1', 'Vy1', 'Vel1', 'Pressure1', 'Bed1', 'Surface1', 'Thickness1', 'MaskIceLevelset1', 'CalvingMetlingRate1', - 'Vx2', 'Vy2', 'Vel2', 'Pressure2', 'Bed2', 'Surface2', 'Thickness2', 'MaskIceLevelset2', 'CalvingMetlingRate2', - 'Vx10', 'Vy10', 'Vel10', 'Pressure10', 'Bed10', 'Surface10', 'Thickness10', 'MaskIceLevelset10', 'CalvingMetlingRate10' + 'Vx1' ,'Vy1' ,'Vel1' ,'Thickness1' ,'MaskIceLevelset1' ,'CalvingCalvingrate1' ,'CalvingMeltingrate1' ,'BasalforcingsFloatingiceMeltingRate1', + 'Vx2' ,'Vy2' ,'Vel2' ,'Thickness2' ,'MaskIceLevelset2' ,'CalvingCalvingrate1' ,'CalvingMeltingrate2' ,'BasalforcingsFloatingiceMeltingRate2', + 'Vx10','Vy10','Vel10','Thickness10','MaskIceLevelset10','CalvingCalvingrate10','CalvingMeltingrate10','BasalforcingsFloatingiceMeltingRate10' ] + field_tolerances = [ - 1e-11, 2e-11, 2e-11, 1e-12, 2e-11, 6e-12, 9e-12, 1e-12, 1e-9, - 2e-11, 1e-11, 1e-11, 9e-12, 2e-1, 2e-11, 2e-11, 1e-11, 1e-9, - 2e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-10, 1e-9, 1e-9 + 1e-11,2e-11,2e-11,1e-11,1e-9,1e-10,1e-10,1e-10, + 2e-11,1e-11,1e-11,9e-11,2e-9,1e-10,1e-10,1e-10, + 2e-10,1e-10,1e-10,1e-10,5e-9,1e-10,1e-10,1e-10 ] field_values = [ md.results.TransientSolution[0].Vx, md.results.TransientSolution[0].Vy, md.results.TransientSolution[0].Vel, - md.results.TransientSolution[0].Pressure, - md.results.TransientSolution[0].Base, - md.results.TransientSolution[0].Surface, md.results.TransientSolution[0].Thickness, md.results.TransientSolution[0].MaskIceLevelset, + md.results.TransientSolution[0].CalvingCalvingrate, md.results.TransientSolution[0].CalvingMeltingrate, - md.results.TransientSolution[1].Vx, - md.results.TransientSolution[1].Vy, - md.results.TransientSolution[1].Vel, - md.results.TransientSolution[1].Pressure, - md.results.TransientSolution[1].Base, - md.results.TransientSolution[1].Surface, - md.results.TransientSolution[1].Thickness, - md.results.TransientSolution[1].MaskIceLevelset, - md.results.TransientSolution[1].CalvingMeltingrate, + md.results.TransientSolution[0].BasalforcingsFloatingiceMeltingRate, + md.results.TransientSolution[4].Vx, + md.results.TransientSolution[4].Vy, + md.results.TransientSolution[4].Vel, + md.results.TransientSolution[4].Thickness, + md.results.TransientSolution[4].MaskIceLevelset, + md.results.TransientSolution[4].CalvingCalvingrate, + md.results.TransientSolution[4].CalvingMeltingrate, + md.results.TransientSolution[4].BasalforcingsFloatingiceMeltingRate, md.results.TransientSolution[9].Vx, md.results.TransientSolution[9].Vy, md.results.TransientSolution[9].Vel, - md.results.TransientSolution[9].Pressure, - md.results.TransientSolution[9].Base, - md.results.TransientSolution[9].Surface, md.results.TransientSolution[9].Thickness, md.results.TransientSolution[9].MaskIceLevelset, - md.results.TransientSolution[9].CalvingMeltingrate + md.results.TransientSolution[9].CalvingCalvingrate, + md.results.TransientSolution[9].CalvingMeltingrate, + md.results.TransientSolution[9].BasalforcingsFloatingiceMeltingRate ]