Changeset 19223
- Timestamp:
- 03/24/15 12:07:53 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/FemModel.cpp
r19215 r19223 611 611 int femmodel_size; 612 612 char* femmodel_buffer=NULL; 613 char* femmodel_buffer_ini=NULL; 613 614 614 615 /*First, recover the name of the restart file: */ … … 618 619 restartfid=pfopen(restartfilename,"wb"); 619 620 621 /*Initialize: */ 622 femmodel_size=0; 623 620 624 /*Create buffer to hold marshalled femmodel: */ 621 625 this->Marshall(NULL,&femmodel_size,MARSHALLING_SIZE); 622 femmodel_buffer=xNew<char>(femmodel_size); 623 626 femmodel_buffer=xNew<char>(femmodel_size); 627 628 /*Keep track of initial position of femmodel_buffer: */ 629 femmodel_buffer_ini=femmodel_buffer; 630 624 631 /*Marshall:*/ 625 this->Marshall(&femmodel_buffer,&femmodel_size,MARSHALLING_FORWARD); 632 this->Marshall(&femmodel_buffer,NULL,MARSHALLING_FORWARD); 633 634 /*Reset position of buffer: */ 635 femmodel_buffer=femmodel_buffer_ini; 626 636 627 637 /*write buffer: */ 628 fwrite(femmodel_buffer,femmodel_size,sizeof( IssmPDouble),restartfid);638 fwrite(femmodel_buffer,femmodel_size,sizeof(char),restartfid); 629 639 630 640 /*Done, close file :*/ … … 637 647 } 638 648 /*}}}*/ 639 void FemModel::Restart(void){/*{{{*/ 649 void FemModel::Restart(){ /*{{{*/ 650 651 FILE* restartfid=NULL; 652 char* restartfilename = NULL; 653 int femmodel_size=0; 654 int fread_return=0; 655 char* femmodel_buffer=NULL; 656 char* femmodel_buffer_ini=NULL; 657 658 /*First, recover the name of the restart file: */ 659 parameters->FindParam(&restartfilename,RestartFileNameEnum); 660 661 /*Now, figure out whether this file actually exists!: */ 662 restartfid=pfopen(restartfilename,"r",false); 663 664 if(restartfid==NULL)return; //could not find the file, so no restart possible. 665 666 /*Figure out size of buffer to be read: */ 667 fseek(restartfid, 0L, SEEK_END); 668 femmodel_size = ftell(restartfid); 669 fseek(restartfid, 0L, SEEK_SET); 670 671 /*Allocate buffer: */ 672 femmodel_buffer=xNew<char>(femmodel_size); 673 674 /*Read buffer from file: */ 675 fread_return=fread(femmodel_buffer,femmodel_size,1,restartfid); if(fread_return!=1)_error_("error reading the buffer from marshalled file!"); 676 femmodel_buffer_ini=femmodel_buffer; //keep track of the initial position, so as to free later. 677 678 /*Create new FemModel by demarshalling the buffer: */ 679 this->Marshall(&femmodel_buffer,NULL,MARSHALLING_BACKWARD); 680 681 /*Done, close file :*/ 682 pfclose(restartfid,restartfilename); 683 684 /*Free ressources: */ 685 xDelete<char>(restartfilename); 686 xDelete<char>(femmodel_buffer); 687 640 688 } 641 689 /*}}}*/ 642 690 void FemModel::Marshall(char** pmarshalled_data, int* pmarshalled_data_size, int marshall_direction){ /*{{{*/ 691 692 if(marshall_direction==MARSHALLING_BACKWARD){ 693 delete profiler; profiler=new Profiler; 694 delete elements; elements=new Elements(); 695 delete nodes; nodes=new Nodes(); 696 delete vertices; vertices=new Vertices(); 697 delete constraints; constraints=new Constraints(); 698 delete loads; loads=new Loads(); 699 delete materials; materials=new Materials(); 700 delete parameters; parameters=new Parameters(); 701 delete results; results=new Results(); 702 xDelete<int>(analysis_type_list); 703 } 643 704 644 705 MARSHALLING_ENUM(FemModelEnum); … … 648 709 MARSHALLING_DYNAMIC(analysis_type_list,int,analysis_counter); 649 710 650 if(marshall_direction==MARSHALLING_BACKWARD){651 profiler=new Profiler;652 elements=new Elements();653 nodes=new Nodes();654 vertices=new Vertices();655 constraints=new Constraints();656 loads=new Loads();657 materials=new Materials();658 parameters=new Parameters();659 results=new Results();660 }661 662 711 profiler->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction); 663 712 elements->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction); … … 670 719 results->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction); 671 720 672 MARSHALLING(comm);673 721 } 674 722 /*}}}*/
Note:
See TracChangeset
for help on using the changeset viewer.