1313#include " 4C_fem_condition_utils.hpp"
1414#include " 4C_fem_general_element.hpp"
1515#include " 4C_global_data.hpp"
16+ #include " 4C_io_discretization_visualization_writer_mesh.hpp"
1617#include " 4C_linalg_utils_densematrix_communication.hpp"
1718#include " 4C_linalg_utils_sparse_algebra_assemble.hpp"
1819#include " 4C_linalg_utils_sparse_algebra_create.hpp"
@@ -42,8 +43,19 @@ Arteries::ArtNetExplicitTimeInt::ArtNetExplicitTimeInt(
4243 Core::IO::DiscretizationWriter& output)
4344 : TimInt(actdis, linsolvernumber, probparams, artparams, output)
4445{
45- // exit(1);
46+ const int restart_step = Global::Problem::instance ()->restart ();
47+ if (restart_step > 0 )
48+ {
49+ FourC::Core::IO::DiscretizationReader reader (
50+ discret_, Global::Problem::instance ()->input_control_file (), restart_step);
51+
52+ time_ = reader.read_double (" time" );
53+ }
4654
55+ visualization_writer_ = std::make_unique<Core::IO::DiscretizationVisualizationWriterMesh>(
56+ actdis, Core::IO::visualization_parameters_factory (
57+ Global::Problem::instance ()->io_params ().sublist (" RUNTIME VTK OUTPUT" ),
58+ *Global::Problem::instance ()->output_control_file (), time_));
4759} // ArtNetExplicitTimeInt::ArtNetExplicitTimeInt
4860
4961
@@ -614,9 +626,84 @@ void Arteries::ArtNetExplicitTimeInt::load_state()
614626 return ;
615627} // ArtNetExplicitTimeInt::LoadState
616628
629+ void Arteries::ArtNetExplicitTimeInt::collect_runtime_output_data (bool CoupledTo3D, int step)
630+ {
631+ visualization_writer_->append_result_data_vector_with_context (
632+ *qanp_, Core::IO::OutputEntity::dof, {" qanp" });
633+
634+ // write domain decomposition for visualization (only once!)
635+ if (step_ == upres_) visualization_writer_->append_element_owner (" Owner" );
636+
637+ this ->calc_postprocessing_values ();
638+
639+ visualization_writer_->append_result_data_vector_with_context (
640+ *qn_, Core::IO::OutputEntity::node, {" one_d_artery_flow" });
641+
642+ visualization_writer_->append_result_data_vector_with_context (
643+ *on_, Core::IO::OutputEntity::node, {" one_d_artery_pressure" });
644+
645+ visualization_writer_->append_result_data_vector_with_context (
646+ *an_, Core::IO::OutputEntity::node, {" one_d_artery_area" });
647+
648+ if (solvescatra_)
649+ {
650+ this ->calc_scatra_from_scatra_fw (export_scatra_, scatraO2np_);
651+ visualization_writer_->append_result_data_vector_with_context (
652+ *export_scatra_, Core::IO::OutputEntity::node, {" one_d_o2_scatra" });
653+ }
654+
655+
656+ visualization_writer_->append_result_data_vector_with_context (
657+ *Wfnp_, Core::IO::OutputEntity::node, {" forward_speed" });
658+
659+ visualization_writer_->append_result_data_vector_with_context (
660+ *Wfo_, Core::IO::OutputEntity::node, {" forward_speed0" });
661+
662+ visualization_writer_->append_result_data_vector_with_context (
663+ *Wbnp_, Core::IO::OutputEntity::node, {" backward_speed" });
664+
665+ visualization_writer_->append_result_data_vector_with_context (
666+ *Wbo_, Core::IO::OutputEntity::node, {" backward_speed0" });
667+
668+ if (CoupledTo3D)
669+ {
670+ output_.write_int (" Actual_RedD_step" , step);
671+ }
672+ }
673+
674+ void Arteries::ArtNetExplicitTimeInt::output_restart (bool CoupledTo3D, int step)
675+ {
676+ // step number and time (only after that data output is possible)
677+ output_.new_step (step_, time_);
678+
679+ // "volumetric flow rate/cross-sectional area" vector
680+ output_.write_vector (" qanp" , qanp_);
681+
682+ // Export postpro results
683+ this ->calc_postprocessing_values ();
684+ output_.write_vector (" one_d_artery_flow" , qn_);
685+ output_.write_vector (" one_d_artery_pressure" , on_);
686+ output_.write_vector (" one_d_artery_area" , an_);
687+
688+ if (solvescatra_)
689+ {
690+ this ->calc_scatra_from_scatra_fw (export_scatra_, scatraO2np_);
691+ output_.write_vector (" one_d_o2_scatra" , export_scatra_);
692+ }
693+
694+
695+ output_.write_vector (" forward_speed" , Wfnp_);
696+ output_.write_vector (" forward_speed0" , Wfo_);
697+ output_.write_vector (" backward_speed" , Wbnp_);
698+ output_.write_vector (" backward_speed0" , Wbo_);
699+
700+ if (CoupledTo3D)
701+ {
702+ output_.write_int (" Actual_RedD_step" , step);
703+ }
704+ }
617705
618706/* ----------------------------------------------------------------------*
619- | output of solution vector to binio ismail 07/09|
620707 *----------------------------------------------------------------------*/
621708void Arteries::ArtNetExplicitTimeInt::output (
622709 bool CoupledTo3D, std::shared_ptr<Teuchos::ParameterList> CouplingParams)
@@ -645,103 +732,15 @@ void Arteries::ArtNetExplicitTimeInt::output(
645732
646733 if (step_ % upres_ == 0 )
647734 {
648- // step number and time
649- output_.new_step (step_, time_);
650- // output_.write_vector("NodeIDs",nodeIds_);
651-
652- // "volumetric flow rate/cross-sectional area" vector
653- output_.write_vector (" qanp" , qanp_);
735+ visualization_writer_->reset ();
654736
737+ collect_runtime_output_data (CoupledTo3D, step);
655738
656- // write domain decomposition for visualization (only once!)
657- if (step_ == upres_) output_.write_element_data (true );
658-
659- // #endif
660- // ------------------------------------------------------------------
661- // Export gnuplot format arteries
662- // ------------------------------------------------------------------
663-
664- Teuchos::ParameterList params;
665- // other parameters that might be needed by the elements
666- params.set (" total time" , time_);
667-
668- // set the dof vector values
669- // discret_->ClearState();
670- // discret_->set_state("qanp",qanp_);
671-
672- // call the gnuplot writer
673- // artgnu_->Write(params);
674- // discret_->ClearState();
675-
676- // Export postpro results
677- this ->calc_postprocessing_values ();
678- output_.write_vector (" one_d_artery_flow" , qn_);
679- output_.write_vector (" one_d_artery_pressure" , on_);
680- output_.write_vector (" one_d_artery_area" , an_);
681-
682- if (solvescatra_)
683- {
684- this ->calc_scatra_from_scatra_fw (export_scatra_, scatraO2np_);
685- output_.write_vector (" one_d_o2_scatra" , export_scatra_);
686- }
687-
688- output_.write_vector (" forward_speed" , Wfnp_);
689- output_.write_vector (" forward_speed0" , Wfo_);
690- output_.write_vector (" backward_speed" , Wbnp_);
691- output_.write_vector (" backward_speed0" , Wbo_);
692-
693- if (CoupledTo3D)
694- {
695- output_.write_int (" Actual_RedD_step" , step);
696- }
739+ visualization_writer_->write_to_disk (time_, step_);
697740 }
698- // write restart also when uprestart_ is not a integer multiple of upres_
699- else if (uprestart_ != 0 && step_ % uprestart_ == 0 )
741+ if (uprestart_ != 0 && step_ % uprestart_ == 0 )
700742 {
701- // step number and time
702- output_.new_step (step_, time_);
703-
704- // "volumetric flow rate/cross-sectional area" vector
705- output_.write_vector (" qanp" , qanp_);
706-
707- // Export postpro results
708- this ->calc_postprocessing_values ();
709- output_.write_vector (" one_d_artery_flow" , qn_);
710- output_.write_vector (" one_d_artery_pressure" , on_);
711- output_.write_vector (" one_d_artery_area" , an_);
712-
713- if (solvescatra_)
714- {
715- this ->calc_scatra_from_scatra_fw (export_scatra_, scatraO2np_);
716- output_.write_vector (" one_d_o2_scatra" , export_scatra_);
717- }
718-
719-
720- output_.write_vector (" forward_speed" , Wfnp_);
721- output_.write_vector (" forward_speed0" , Wfo_);
722- output_.write_vector (" backward_speed" , Wbnp_);
723- output_.write_vector (" backward_speed0" , Wbo_);
724-
725- // ------------------------------------------------------------------
726- // Export gnuplot format arteries
727- // ------------------------------------------------------------------
728- // #endif
729- Teuchos::ParameterList params;
730- // other parameters that might be needed by the elements
731- params.set (" total time" , time_);
732-
733- // set the dof vector values
734- // discret_->ClearState();
735- // discret_->set_state("qanp",qanp_);
736-
737- // call the gnuplot writer
738- // artgnu_->Write(params);
739- // discret_->ClearState();
740-
741- if (CoupledTo3D)
742- {
743- output_.write_int (" Actual_RedD_step" , step);
744- }
743+ output_restart (CoupledTo3D, step);
745744 }
746745
747746 // -------------------------------------------------------------------
@@ -756,7 +755,7 @@ void Arteries::ArtNetExplicitTimeInt::output(
756755 time_ = time_backup;
757756 }
758757
759- return ;
758+
760759} // ArteryExplicitTimeInt::Output
761760
762761
0 commit comments