547 {
548 sLattice.template addPostProcessor<FreeSurface::Stage0>(
549 meta::id<FreeSurfaceMassFlowPostProcessor3D<T,DESCRIPTOR>>{});
550 sLattice.template addPostProcessor<FreeSurface::Stage1>(
551 meta::id<FreeSurfaceToFluidCellConversionPostProcessor3D<T,DESCRIPTOR>>{});
552 sLattice.template addPostProcessor<FreeSurface::Stage2>(
553 meta::id<FreeSurfaceToGasCellConversionPostProcessor3D<T,DESCRIPTOR>>{});
554 sLattice.template addPostProcessor<FreeSurface::Stage3>(
555 meta::id<FreeSurfaceMassExcessPostProcessor3D<T,DESCRIPTOR>>{});
556 sLattice.template addPostProcessor<FreeSurface::Stage4>(
557 meta::id<FreeSurfaceFinalizeConversionPostProcessor3D<T,DESCRIPTOR>>{});
558
559 {
560
561 auto& communicator = sLattice.getCommunicator(FreeSurface::Stage0());
562 communicator.requestOverlap(2);
563 communicator.template requestField<FreeSurface::EPSILON>();
564 communicator.template requestField<FreeSurface::CELL_TYPE>();
565 communicator.template requestField<descriptors::POPULATION>();
566 communicator.exchangeRequests();
567 }
568
569 {
570
571 auto& communicator = sLattice.getCommunicator(FreeSurface::Stage1());
572 communicator.requestOverlap(2);
573 communicator.template requestField<FreeSurface::CELL_FLAGS>();
574 communicator.template requestField<descriptors::POPULATION>();
575 communicator.exchangeRequests();
576 }
577
578 {
579
580 auto& communicator = sLattice.getCommunicator(FreeSurface::Stage2());
581 communicator.requestOverlap(2);
582 communicator.template requestField<FreeSurface::CELL_FLAGS>();
583 communicator.exchangeRequests();
584 }
585
586 {
587
588 auto& communicator = sLattice.getCommunicator(FreeSurface::Stage3());
589 communicator.requestOverlap(2);
590 communicator.template requestField<FreeSurface::CELL_FLAGS>();
591 communicator.exchangeRequests();
592 }
593
594 {
595
596 auto& communicator = sLattice.getCommunicator(FreeSurface::Stage4());
597 communicator.requestOverlap(2);
598 communicator.template requestField<FreeSurface::TEMP_MASS_EXCHANGE>();
599 communicator.exchangeRequests();
600 }
601
602 sLattice.template addCustomTask<stage::PostStream>([&]() {
603 sLattice.executePostProcessors(FreeSurface::Stage0());
604 sLattice.executePostProcessors(FreeSurface::Stage1());
605 sLattice.executePostProcessors(FreeSurface::Stage2());
606 sLattice.executePostProcessors(FreeSurface::Stage3());
607 sLattice.executePostProcessors(FreeSurface::Stage4());
608 });
609}