module FluidFlowMain implicit none public contains ! subroutine FluidFlow_Setup() use CSimulationVariables implicit none !call OnSimulationInitialization%Add(FluidFlow_Init) call OnSimulationStop%Add(FluidFlow_Stop) call OnFluidFlowStart%Add(FluidFlow_Start) call OnFluidFlowStep%Add(FluidFlow_Step) !call OnFluidFlowOutput%Add(FluidFlow_Output) call OnFluidFlowMain%Add(FluidFlowMainBody) end subroutine subroutine FluidFlow_Stop implicit none !WRITE (*,*) ' fluid flow done_Stop' call DEALLOCATE_ARRAYS_NormalCirculation() CALL DeallocateFlowTypes end subroutine FluidFlow_Stop subroutine FluidFlow_Start USE Fluid_Flow_Startup_Vars implicit none !WRITE (*,*) ' fluid flow done_Start' CALL NormalCirculation_StartUp() CALL FlowStartup Call TD_StartUp Call TD_WellReadData Call TD_WellElementsReadData Call TD_DrillStemReadData Call TD_PipePropertiesReadData end subroutine FluidFlow_Start subroutine FluidFlow_Step implicit none integer :: i, FlowDuration, SimulationStateOld integer,dimension(8) :: FlowStartTime,FlowEndTime !WRITE (*,*) ' fluid flow done_Step' !call Fluid_Flow_Solver CALL DATE_AND_TIME(values=FlowStartTime) call Fluid_Flow_Solver CALL DATE_AND_TIME(values=FlowEndTime) FlowDuration = 3600000 * (FlowEndTime(5) - FlowStartTime(5)) + 60000 * (FlowEndTime(6) - FlowStartTime(6)) + 1000 * (FlowEndTime(7) - FlowStartTime(7)) + (FlowEndTime(8) - FlowStartTime(8)) WRITE (*,*) 'FlowDuration (ms)=' , FlowDuration end subroutine FluidFlow_Step !subroutine FluidFlow_Output ! implicit none !end subroutine FluidFlow_Output subroutine FluidFlowMainBody ! use ifport use ifmt use CSimulationVariables USE Fluid_Flow_Startup_Vars !use general_info, only : reset_data !use well_info !use drilling_info use CLog1 ! implicit none !integer :: i, FlowDuration, SimulationStateOld !integer,dimension(8) :: FlowStartTime,FlowEndTime ! ! !CALL NormalCirculation_StartUp() !CALL FlowStartup ! !Call TD_StartUp !Call TD_WellReadData !Call TD_WellElementsReadData !Call TD_DrillStemReadData !Call TD_PipePropertiesReadData ! ! !LoopSimulation: do ! !WRITE (*,*) ' fluid flow done 0' !! ! CALL DATE_AND_TIME(values=FlowStartTime) ! !WRITE (*,*) 'FlowStartTime=', FlowStartTime !! ! call Fluid_Flow_Solver ! !! ! CALL DATE_AND_TIME(values=FlowEndTime) !! ! !WRITE (*,*) ' fluid flow done 1' ! ! ! ! FlowDuration = 3600000 * (FlowEndTime(5) - FlowStartTime(5)) + 60000 * (FlowEndTime(6) - FlowStartTime(6)) + 1000 * (FlowEndTime(7) - FlowStartTime(7)) + (FlowEndTime(8) - FlowStartTime(8)) ! ! ! !call Log_1('FlowDuration=', FlowDuration) ! !WRITE (*,*) 'FlowDuration (ms)=' , FlowDuration ! ! if ((100 - FlowDuration) > 0) then ! !WRITE (*,*) 'fluid flow done 2' ! call sleepqq(100 - FlowDuration) ! !WRITE (*,*) ' fluid flow done 3' ! ! end if ! !WRITE (*,*) ' fluid flow done 4' ! ! ! ! !WRITE (*,*) "FlowDuration", FlowDuration ! !if(IsStopped) then ! ! EXIT LoopSimulation ! !ENDIF ! !write(*,*) 'IsStopped=' , IsStopped ! ! if(IsStopped) then ! !write(*,*) '44444444444' ! ! call DEALLOCATE_ARRAYS_NormalCirculation() ! CALL DeallocateFlowTypes ! call Quit() ! end if ! ! ! ! if(IsStopped) exit LoopSimulation ! ! !end do LoopSimulation !!call DEALLOCATE_ARRAYS_NormalCirculation() !!CALL DeallocateFlowTypes ! ! end subroutine FluidFlowMainBody end module FluidFlowMain