Changeset 3881


Ignore:
Timestamp:
05/21/10 13:14:05 (15 years ago)
Author:
Mathieu Morlighem
Message:

fixed thermal transient (still imperfect

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/parallel/thermal_core.cpp

    r3751 r3881  
    7575               
    7676                nsteps=(int)(ndt/dt);
    77                 time=(double*)xmalloc((nsteps+1)*sizeof(double));
    78                 time[0]=0;
     77                time=(double*)xmalloc((nsteps)*sizeof(double));
    7978
    8079                /*allocate t_g and m_g arrays: */
    81                 t_g=(Vec*)xmalloc((nsteps+1)*sizeof(Vec));
    82                 m_g=(Vec*)xmalloc((nsteps+1)*sizeof(Vec));
    83 
    84                 //initialize temperature and melting
    85                 fem_t->FindParam(&t_g_serial,NULL,NULL,TemperatureEnum);
    86                 t_g[0]=SerialToVec(t_g_serial,numberofnodes);
    87                 xfree((void**)&t_g_serial);
    88                 fem_m->FindParam(&m_g_serial,NULL,NULL,MeltingRateEnum);
    89                 m_g[0]=SerialToVec(m_g_serial,numberofnodes);
    90                 xfree((void**)&m_g_serial);
     80                t_g=(Vec*)xmalloc((nsteps)*sizeof(Vec));
     81                m_g=(Vec*)xmalloc((nsteps)*sizeof(Vec));
    9182
    9283                for(i=0;i<nsteps;i++){
    9384                        if(verbose)_printf_("time step: %i/%i\n",i+1,nsteps);
    94                         time[i+1]=(i+1)*dt;
     85                        time[i]=(i+1)*dt;
    9586                       
    9687                        if(verbose)_printf_("computing temperatures:\n");
    97                         model->UpdateInputsFromVector(t_g[i],TemperatureEnum,VertexEnum);
    98                         thermal_core_nonlinear(&t_g[i+1],&melting_offset,fem_t,ThermalAnalysisEnum,NoneAnalysisEnum);
     88                        thermal_core_nonlinear(&t_g[i],&melting_offset,fem_t,ThermalAnalysisEnum,NoneAnalysisEnum);
    9989                       
    10090                        if(verbose)_printf_("computing melting:\n");
    101                         model->UpdateInputsFromVector(t_g[i+1],TemperatureEnum,VertexEnum);
     91                        model->UpdateInputsFromVector(t_g[i],TemperatureEnum,VertexEnum);
    10292                        model->UpdateInputsFromConstant(melting_offset,MeltingOffsetEnum);
    103                         diagnostic_core_linear(&m_g[i+1],fem_m,MeltingAnalysisEnum,NoneAnalysisEnum);
     93                        diagnostic_core_linear(&m_g[i],fem_m,MeltingAnalysisEnum,NoneAnalysisEnum);
    10494                }
    10595        }
     
    118108        }
    119109        else{
    120                 for(i=0;i<nsteps+1;i++){
     110                for(i=0;i<nsteps;i++){
    121111                        result=new Result(results->Size()+1,time[i],i+1,"t_g",t_g[i]);
    122112                        results->AddObject(result);
Note: See TracChangeset for help on using the changeset viewer.