38     if (Parallelisation 
is 'Hybrid_Socket' or Parallelisation 
is 'Hybrid_Node'):
    42     if (Parallelisation 
is 'Modal'):
    43         PROC_Z = [2, 4, 5, 8, 10, 20]
    44         PROC_XY = [1, 1, 1, 1, 1, 1]
    47     if (Parallelisation 
is 'Elemental'):
    48         PROC_Z = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
    49         PROC_XY = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
    68     for i 
in range(0, len(PROC_Z)):
    71         Communication_Count = 0.0
    74         Simulation = Topology(PROC_Z[i], PROC_XY[i], Num_Core_Per_Socket, Num_Sock_Per_Node, Scheme)
    77         (Num_Element_Msg, Num_Elements) = 
Partition(Mesh_File, PROC_XY[i])
    80         Simulation.Input_Communication(BW_Node_To_Node, LAT_Node_To_Node, BW_Socket_To_Socket, LAT_Socket_To_Socket, BW_Core_To_Core, LAT_Core_To_Core)
    83         Simulation.Distribute_Modes(Num_Modes);
    84         Simulation.Distribute_Elements(Num_Element_Msg, Num_Elements);
    87         Simulation.CG_Iterations(Pressure, Velocity_1, Velocity_2, Velocity_3)
    90         Simulation.Data_Size(P)
    93         Simulation.Hardware_Constant(Num_Constants, Fit)
    96         Pairwise.append(Simulation.Communication_Pairwise_Exchange())
    97         Communication_Count += Pairwise[i]
   100         Allreduce.append(Simulation.Communication_Allreduce())
   101         Communication_Count += Allreduce[i]
   104         Alltoall.append(Simulation.Communication_Alltoall())
   105         Communication_Count += Alltoall[i]
   108         Serial.append(Simulation.Serial_Compute())
   111         Serial_Pairwise.append(Serial[i] + Pairwise[i])
   112         Serial_Allreduce.append(Serial[i] + Allreduce[i])
   113         Serial_Alltoall.append(Serial[i] + Alltoall[i])
   116         Communication.append(Communication_Count)
   119         Total.append(Communication[i] + Serial[i])
   121     if (Parallelisation == 
'Hybrid'):
   122         fig, ax = plt.subplots()
   123         ax.plot(PROC_Z, Total, label = 
'Model')
   124         ax.set_xlabel(
'$ R_Z $')
   125         ax.set_ylabel(
'Timestep (s)')
   126         ax.set_title(
'Length of Single Timestep: Model')
   128         fig.savefig(
"Output/Figures/Model_Hybrid.png")
   130     if (Parallelisation == 
'Modal'):
   131         fig, ax = plt.subplots()
   132         ax.plot(PROC_Z, Total, label = 
'Model')
   133         ax.set_xlabel(
'$ R_Z $')
   134         ax.set_ylabel(
'Timestep (s)')
   135         ax.set_title(
'Length of Single Timestep: Model')
   137         fig.savefig(
"Output/Figures/Model_Modal.png")
   139     if (Parallelisation == 
'Elemental'):
   140         fig, ax = plt.subplots()
   141         ax.plot(PROC_XY, Total, label = 
'Model')
   142         ax.set_xlabel(
'$ R_{XY} $')
   143         ax.set_ylabel(
'Timestep (s)')
   144         ax.set_title(
'Length of Single Timestep: Model')
   146         fig.savefig(
"Output/Figures/Model_Elemental.png")
   148     return(PROC_Z, PROC_XY, Total)
 def Find_Topologies(PROC_TOT, Num_Modes)
 
def Partition(Input_Filename, PROC_XY)