next up previous contents
Next: 1-D ANALYSIS AND RESULTS Up: Parallel Implementation using Charm++ Previous: Structure of Standard Charm++   Contents

Parallel Structure of the Dynamic Insertion Code

Since our periodic insertion of cohesive elements changes the basic mesh, we must remesh after each insertion. In order to achieve this using the current framework, we take advantage of the optional partitioning in the mesh_update subroutine. At specific intervals during the general solution loop, each driver routine sends all of its data to mesh_update. The data is reassembled into a serial mesh where we can perform any necessary cohesive element insertions or mesh updates much more easily then when the mesh is distributed across several chunks. The biggest difficulty with performing insertions on the distributed mesh is due to the boundary edges and nodes which may require information from other chunks. This would require extensive communications between the chunks, resulting in increased computational effort. Instead, we perform our insertion on a serial mesh and then partition it into several chunk and distributed it to the various processors. The structure of our code is presented in Table 2.4.


Table 2.4: Parallel structure of the dynamic insertion code.
init
read input data and serial mesh
call FEM_Set() // send data to driver

driver
//optionally read input data needed by each chunk
fieldid = FEM_Create_Field() // create mass and force fields
Main Update Loop
call FEM_Get() // get data from init/mesh_update
call FEM_Update_Field(masses)
Solution loop
// calculate displacements
// calculate forces
call FEM_Update_Field(forces)
// calculate accelerations
// calculate velocities
End Solution loop
call FEM_Set() // send data to update_mesh
call FEM_Update_Mesh(timestep,1) // repartition
call FEM_Get() // get data back from update_mesh
End Main Update Loop

mesh_update
call FEM_Set() // get data from each driver
// dynamic insertion and other mesh manipulations
call FEM_Set() // send data back to driver

finalize
close out the program



next up previous contents
Next: 1-D ANALYSIS AND RESULTS Up: Parallel Implementation using Charm++ Previous: Structure of Standard Charm++   Contents
Mariusz Zaczek 2002-10-13