Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/post/src/sico2elmer/loadsingle
3203 views
function loadfl(file)
{
  fp = fopen( file,"r" );
  xx = fscanf( fp,"%lf %lf %lf %lf\n" );
  rows = xx(2);
  cols = xx(3);
  str = fread( fp,rows*cols*4 );
  fclose(fp);
  _loadfl = rows cols % cvtmat( str,"float" );
}


function sicoreadfile(basename,slice,noftimes)
   import nodes
   export Velocity,Velocity_abs, Temperature, Height, Drainage, Melt, Mask, Ncts, Flux, Flux_abs, Age, times
{

   if ( ~exists("slice") ) slice = 1;


      !
      ! if you have filenames like file00,file01,file02, etc...
      !
      fname = sprintf( "%02g", slice );
      suffix = ".dat"	
      fname = basename fname suffix;

      x = loadfl(fname);

      ! after which you have f.ex. temp (after a modification of the original
      ! extract function to change the names of the exported variables) for
      ! current temperature, you can add this to overall temperature:

      n = time(noftimes);
      Height(n)=x(time(0),0); 
      Velocity(0,n)=x(time(0),1);
      Velocity(1,n)=x(time(0),2);
      Velocity(2,n)=x(time(0),3);
      Drainage(n)=x(time(0),4);
      Melt(n)=x(time(0),5);
      Mask(n)=x(time(0),6);
      Ncts(n)=x(time(0),7);
      Temperature(n)=x(time(0),8);
      Age(n)=x(time(0),9);
      Flux(0,n)=x(time(0),10);
      Flux(1,n)=x(time(0),11);
      Flux(2,n)=0.0;

      ! set timestep info for timestep panel:
      ! in principle first value here is meant to be a running index,
      ! second value simulation timestep index and third simulation time
      times(0:2,noftimes) = noftimes;


   ! and recompute absolute values of vectors:
   ! don't have to do this in the extract function anymore...

   Velocity_abs = sqrt(vdot(Velocity,Velocity));
   Flux_abs = sqrt(vdot(Flux, Flux));


   str = sprintf("set NumberOfTimesteps %g", noftimes );
   tcl( str );
}