0001 function marshall(md,solutiontype,package)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 if ((nargin~=3) & (nargout~=0))
0013 marshallusage;
0014 error('marshall error message');
0015 end
0016
0017 disp(['marshalling file ' md.name '.bin']);
0018
0019
0020 fid=fopen([ md.name '.bin'],'wb');
0021 if fid==-1,
0022 error(['marshall error message: could not open ' [md.name '.bin'],' file for binary writing']);
0023 end
0024
0025 WriteData(fid,solutiontype,'String');
0026 WriteData(fid,md.repository,'String');
0027 WriteData(fid,md.type,'String');
0028 WriteData(fid,md.numberofgrids,'Integer');
0029 WriteData(fid,md.numberofelements,'Integer');
0030 WriteData(fid,md.x,'Mat');
0031 WriteData(fid,md.y,'Mat');
0032 WriteData(fid,md.z,'Mat');
0033 WriteData(fid,md.elements,'Mat');
0034 WriteData(fid,md.elements_type,'Mat');
0035
0036 if strcmpi(md.type,'3d'),
0037 WriteData(fid,md.numberofelements2d,'Integer');
0038 WriteData(fid,md.numberofgrids2d,'Integer');
0039 WriteData(fid,md.elements2d,'Mat');
0040 WriteData(fid,md.deadgrids,'Mat');
0041 WriteData(fid,md.numlayers,'Integer');
0042 end
0043 WriteData(fid,md.elementonbed,'Mat');
0044 WriteData(fid,md.elementonsurface,'Mat');
0045 WriteData(fid,md.gridonbed,'Mat');
0046 WriteData(fid,md.gridonsurface,'Mat');
0047
0048
0049 WriteData(fid,md.thickness,'Mat');
0050 WriteData(fid,md.surface,'Mat');
0051 WriteData(fid,md.bed,'Mat');
0052
0053 WriteData(fid,md.vx_obs,'Mat');
0054 WriteData(fid,md.vy_obs,'Mat');
0055
0056 WriteData(fid,md.vx,'Mat');
0057 WriteData(fid,md.vy,'Mat');
0058 WriteData(fid,md.vz,'Mat');
0059 WriteData(fid,md.pressure,'Mat');
0060
0061
0062 WriteData(fid,md.drag_type,'Integer');
0063 WriteData(fid,md.drag,'Mat');
0064 WriteData(fid,md.p,'Mat');
0065 WriteData(fid,md.q,'Mat');
0066
0067 WriteData(fid,md.elementoniceshelf,'Mat');
0068
0069 WriteData(fid,md.segmentonneumann_diag,'Mat');
0070 WriteData(fid,md.neumannvalues_diag,'Mat');
0071 WriteData(fid,md.gridondirichlet_diag,'Mat');
0072 WriteData(fid,md.dirichletvalues_diag,'Mat');
0073
0074 WriteData(fid,md.segmentonneumann_prog,'Mat');
0075 WriteData(fid,md.neumannvalues_prog,'Mat');
0076 WriteData(fid,md.gridondirichlet_prog,'Mat');
0077 WriteData(fid,md.dirichletvalues_prog,'Mat');
0078 WriteData(fid,md.segmentonneumann_prog2,'Mat');
0079 WriteData(fid,md.neumannvalues_prog2,'Mat');
0080
0081 WriteData(fid,md.gridondirichlet_thermal,'Mat');
0082 WriteData(fid,md.dirichletvalues_thermal,'Mat');
0083 WriteData(fid,md.geothermalflux,'Mat');
0084 WriteData(fid,md.melting,'Mat');
0085 WriteData(fid,md.accumulation,'Mat');
0086
0087
0088 WriteData(fid,md.rho_water,'Scalar');
0089 WriteData(fid,md.rho_ice,'Scalar');
0090 WriteData(fid,md.g,'Scalar');
0091 WriteData(fid,md.B,'Mat');
0092 WriteData(fid,md.n,'Mat');
0093
0094
0095 WriteData(fid,length(md.control_type),'Integer');
0096 for i=1:length(md.control_type),
0097 WriteData(fid,md.control_type{i},'String');
0098 end
0099
0100
0101 WriteData(fid,md.fit,'Mat');
0102 WriteData(fid,md.yts,'Scalar');
0103 WriteData(fid,md.meanvel,'Scalar');
0104 WriteData(fid,md.epsvel,'Scalar');
0105 WriteData(fid,md.debug,'Integer');
0106 WriteData(fid,md.artificial_diffusivity,'Integer');
0107 WriteData(fid,md.nsteps,'Integer');
0108 WriteData(fid,md.tolx,'Scalar');
0109 WriteData(fid,md.maxiter,'Mat');
0110 WriteData(fid,md.mincontrolconstraint,'Scalar');
0111 WriteData(fid,md.maxcontrolconstraint,'Scalar');
0112 WriteData(fid,md.eps_rel,'Scalar');
0113 WriteData(fid,md.dt,'Scalar');
0114 WriteData(fid,md.ndt,'Scalar');
0115 WriteData(fid,md.penalty_offset,'Scalar');
0116 WriteData(fid,md.penalty_melting,'Scalar');
0117 WriteData(fid,md.penalty_lock,'Integer');
0118 WriteData(fid,md.sparsity,'Scalar');
0119 WriteData(fid,md.connectivity,'Integer');
0120 WriteData(fid,md.lowmem,'Integer');
0121 WriteData(fid,md.optscal,'Mat');
0122 WriteData(fid,md.solverstring,'String');
0123 WriteData(fid,md.viscosity_overshoot,'Scalar');
0124 WriteData(fid,md.waitonlock,'Integer');
0125
0126
0127 WriteData(fid,md.beta,'Scalar');
0128 WriteData(fid,md.meltingpoint,'Scalar');
0129 WriteData(fid,md.latentheat,'Scalar');
0130 WriteData(fid,md.heatcapacity,'Scalar');
0131 WriteData(fid,md.thermalconductivity,'Scalar');
0132 WriteData(fid,md.min_thermal_constraints,'Integer');
0133 WriteData(fid,md.mixed_layer_capacity,'Scalar');
0134 WriteData(fid,md.thermal_exchange_velocity,'Scalar');
0135
0136
0137 WriteData(fid,md.numrifts,'Integer');
0138 if md.numrifts,
0139 for i=1:md.numrifts,
0140 WriteData(fid,md.rifts(i).penaltypairs,'Mat');
0141 WriteData(fid,md.rifts(i).fill,'Scalar');
0142 WriteData(fid,md.rifts(i).friction,'Scalar');
0143 end
0144 end
0145
0146
0147 if strcmpi(md.type,'3d'),
0148 WriteData(fid,md.penalties,'Mat');
0149 end
0150
0151
0152 st=fclose(fid);
0153 if st==-1,
0154 error(['marshall error message: could not close file ' [md.name '.bin']]);
0155 end
0156
0157 end
0158
0159
0160 function marshallusage();
0161 disp(' ');
0162 disp('function marshall(md,solutiontype)');
0163 disp(' marshall: output Cielo compatible binary file from @model md, for certain solution type.');
0164 disp(' solutiontype can be ''diagnostic'',''prognostic'' or ''control''. ');
0165 disp(' This binary file will be used for parallel runs in cielo.');
0166 disp('INPUT function marshall(md,solutiontype)');
0167 end