Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Source Code
subroutine start_timer(title,unit)character(len=*),optional::titleinteger,optional::unit!Tindex=Tindex+1if(Tindex>Tmax)stop"start_timer error: too many timers started"!mpi_id=0#ifdef _MPI if(check_MPI())mpi_id=get_Rank_MPI()#endiffunit(Tindex)=6+mpi_id;if(present(unit))funit(Tindex)=unitif(funit(Tindex)==5)funit(Tindex)=6!if(present(title))write(funit(Tindex),"(1x,A)")trim(title)!#ifdef _MPI if(check_MPI())thenst_T_start(Tindex)=MPI_Wtime()else call system_clock(count_rate=st_rate)call system_clock(count=st_T_start(Tindex))endif#elsecall system_clock(count_rate=st_rate)call system_clock(count=st_T_start(Tindex))#endifcall cpu_time(ct_T_start(Tindex))call date_and_time(values=dt_T_start(Tindex,:))st_T0=st_T_startct_T0=ct_T_startdt_T0=dt_T_start!!init variables for ETA:elapsed_time=0.0old_time=0.0time=0.0end subroutine start_timer