Changeset 908


Ignore:
Timestamp:
06/11/09 14:54:23 (16 years ago)
Author:
seroussi
Message:

simplified parameter file

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/test/Validation/RoundIceSheet/Circ.par

    r16 r908  
    1 
    21%Ok, start defining model parameters here
    32
    4 %material parameters
    5         md.g=9.81;
    6         md.rho_ice=910;
    7         md.rho_water=1023;
    8         di=md.rho_ice/md.rho_water;
    9         md.yts=365*24*3600;
    10         md.heatcapacity=2009;
    11         md.thermalconductivity=2.2; %W/mK
    12         md.beta=9.8*10^-8;
     3disp('      creating thickness');
     4hmin=0.01;
     5hmax=2756.7;
     6radius=(sqrt((md.x).^2+(md.y).^2));
     7radiusmax=max(radius);
     8md.thickness=hmin*ones(size(md.x,1),1)+hmax*(4*((1/2)^(4/3)*ones(size(md.x,1),1)-((radius)./(2*radiusmax)).^(4/3))).^(3/8);
     9md.firn_layer=10*ones(md.numberofgrids,1);
     10md.bed=0*md.thickness;
     11md.surface=md.bed+md.thickness;
    1312
    14 %Solution parameters
    15         %parallelization
    16         client_server_mode='no';
    17         md.cluster='none';
    18         md.np=2;
    19         md.time=1;
    20         md.exclusive=0;
     13disp('      creating drag');
     14md.drag_type=2; %0 none 1 plastic 2 viscous
     15md.drag=20*ones(md.numberofgrids,1); %q=1. %no drag is specified in the analytical solution
     16%Take care of iceshelves: no basal drag
     17pos=find(md.elementoniceshelf);
     18md.drag(md.elements(pos,:))=0;
     19md.p=ones(md.numberofelements,1);
     20md.q=ones(md.numberofelements,1);
    2121
    22         %statics
    23         md.eps_rel=0.01;
    24         md.eps_abs=10;
    25         md.penalty_offset=3.5;
    26         md.lowmem=1;
    27         if md.numberofgrids<1000000,
    28         md.sparsity=.001;
    29         else
    30         md.sparsity=.0001;
    31         end
     22disp('      creating temperatures');
     23md.observed_temperature=(273-20)*ones(md.numberofgrids,1);
    3224
    33         %dynamics
    34         md.dt=1*md.yts; %1 year
    35         md.ndt=md.dt*10;
    36         md.artificial_diffusivity=1;
     25disp('      creating flow law paramter');
     26md.B=6.81*10^(7)*ones(md.numberofgrids,1); %to have the same B as the analytical solution
     27md.n=3*ones(md.numberofelements,1);
    3728
    38         %control
    39         md.control_type={'drag'}; %'drag', 'B'
    40         md.nsteps=5;
    41         md.tolx=10^-4;
    42         md.maxiter=20;
    43         md.optscal=10;
    44         md.fit='logarithmic'; %'absolute','relative','logarithmic'
    45         md.meanvel=1000/md.yts; %1000 meters/year
    46         md.epsvel=eps;
     29disp('      creating accumulation rates');
     30md.accumulation=0.3*ones(md.numberofgrids,1)/md.yts; %1m/a
    4731
    48         disp('      creating thickness');
    49         hmin=0.01;
    50         hmax=2756.7;
    51         radius=(sqrt((md.x).^2+(md.y).^2));
    52         radiusmax=max(radius);
    53         md.thickness=hmin*ones(size(md.x,1),1)+hmax*(4*((1/2)^(4/3)*ones(size(md.x,1),1)-((radius)./(2*radiusmax)).^(4/3))).^(3/8);
    54         md.firn_layer=10*ones(md.numberofgrids,1);
    55         md.bed=0*md.thickness;
    56         md.surface=md.bed+md.thickness;
     32disp('      creating velocities');
     33constant=0.3;
     34md.vx_obs=constant/2*md.x.*(md.thickness).^-1;
     35md.vy_obs=constant/2*md.y.*(md.thickness).^-1;
     36md.vel_obs=(sqrt((md.vx_obs).^2+(md.vy_obs).^2));
    5737
    58         disp('      creating drag');
    59         md.drag_type=2; %0 none 1 plastic 2 viscous
    60         md.drag=20*ones(md.numberofgrids,1); %q=1. %no drag is specified in the analytical solution
    61         %Take care of iceshelves: no basal drag
    62         pos=find(md.elementoniceshelf);
    63         md.drag(md.elements(pos,:))=0;
    64         md.p=ones(md.numberofelements,1);
    65         md.q=ones(md.numberofelements,1);
     38%Deal with boundary conditions:
     39disp('      boundary conditions for diagnostic model: ');
     40%Build gridonicefront, array of boundary grids belonging to the icefront:
     41gridonicefront=double(md.gridonboundary);
    6642
    67         disp('      creating temperatures');
    68         md.observed_temperature=(273-20)*ones(md.numberofgrids,1);
     43md.gridondirichlet_diag=zeros(md.numberofgrids,1);
     44pos=find(md.gridonboundary & ~gridonicefront);md.gridondirichlet_diag(pos)=1;
     45md.dirichletvalues_diag=zeros(md.numberofgrids,2);
    6946
    70         disp('      creating flow law paramter');
    71         md.B=6.81*10^(7)*ones(md.numberofgrids,1); %to have the same B as the analytical solution
    72         md.n=3*ones(md.numberofelements,1);
     47radius=sqrt((md.x).*md.x+(md.y).*md.y);
     48pos=find(radius==min(radius));md.gridondirichlet_diag(pos)=1;
     49md.x(pos)=0; md.y(pos)=0; %the closest node to the center is changed to be exactly at the center
    7350
    74         disp('      creating accumulation rates');
    75         md.accumulation=0.3*ones(md.numberofgrids,1)/md.yts; %1m/a
     51pos=find(gridonicefront(md.segments(:,1)) | gridonicefront(md.segments(:,2)));
     52md.segmentonneumann_diag=md.segments(pos,:);
     53md.neumannvalues_diag=NaN*ones(length(md.segmentonneumann_diag),1); %dynamic boundary conditions (water pressure)
    7654
    77         disp('      creating velocities');
    78         constant=0.3;
    79         md.vx_obs=constant/2*md.x.*(md.thickness).^-1;
    80         md.vy_obs=constant/2*md.y.*(md.thickness).^-1;
    81 
    82         %md.vx_obs=zeros(md.numberofgrids,1);
    83         %md.vy_obs=zeros(md.numberofgrids,1);
    84         md.vel_obs=(sqrt((md.vx_obs).^2+(md.vy_obs).^2));
    85        
    86         %Deal with boundary conditions:
    87        
    88         disp('      boundary conditions for diagnostic model: ');
    89         %Build gridonicefront, array of boundary grids belonging to the icefront:
    90         gridinsideicefront=ArgusContourToMesh(md.elements,md.x,md.y,expread('Front.exp',1),'node',1);
    91         gridonicefront=double(md.gridonboundary & gridinsideicefront);
    92 
    93         md.gridondirichlet_diag=zeros(md.numberofgrids,1);
    94         pos=find(md.gridonboundary & ~gridonicefront);md.gridondirichlet_diag(pos)=1;
    95         md.dirichletvalues_diag=zeros(md.numberofgrids,2);
    96        
    97         radius=sqrt((md.x).*md.x+(md.y).*md.y);
    98         pos=find(radius==min(radius));md.gridondirichlet_diag(pos)=1;
    99         md.x(pos)=0; md.y(pos)=0; %the closest node to the center is changed to be exactly at the center
    100 
    101         pos=find(gridonicefront(md.segments(:,1)) | gridonicefront(md.segments(:,2)));
    102         md.segmentonneumann_diag=md.segments(pos,:);
    103         md.neumannvalues_diag=NaN*ones(length(md.segmentonneumann_diag),1); %dynamic boundary conditions (water pressure)
    104 
    105         disp('      boundary conditions for prognostic model: ');
    106         md.gridondirichlet_prog=zeros(md.numberofgrids,1);
    107         md.dirichletvalues_prog=zeros(md.numberofgrids,1);
    108         pos=find(gridonicefront(md.segments(:,1)) | gridonicefront(md.segments(:,2)));
    109         md.segmentonneumann_prog=md.segments(pos,:);
    110         md.neumannvalues_prog=zeros(size(md.segmentonneumann_prog,1),1);
    111         md.neumannvalues_prog(:)=NaN; %free radiation
    112        
    113         pos=find(gridonicefront(md.segments(:,1)) | gridonicefront(md.segments(:,2)));
    114         md.segmentonneumann_prog2=md.segments(pos,:);
    115         md.neumannvalues_prog2=zeros(size(md.segmentonneumann_prog2,1),1);
    116         md.neumannvalues_prog2(:)=NaN; %free radiation
    117        
    118         disp('      boundary conditions for thermal model: ');
    119         md.melting=zeros(md.numberofgrids,1);
    120         md.gridondirichlet_thermal=ones(md.numberofgrids,1); %surface temperatures
    121         md.dirichletvalues_thermal=md.observed_temperature;
    122         md.geothermalflux=zeros(md.numberofgrids,1);
    123         pos=find(md.elementonicesheet);
    124         %md.geothermalflux(md.elements(pos,:))=50*10^-3; %50 mW/m^2
    125 
    126 % Some Cielo code, ignore.
    127 if strcmp(md.cluster,'yes')
    128         ServerDisconnect;
    129 end   
     55disp('      boundary conditions for thermal model: ');
     56md.gridondirichlet_thermal=zeros(md.numberofgrids,1);
Note: See TracChangeset for help on using the changeset viewer.