130 likes | 324 Views
ParFUM from an Application Perspective. M. Scot Breitenfeld. Motivation. Finite element code 3-D Cohesive/volumetric finite element (CVFE) scheme for spontaneous dynamic fracture Uses cohesive element for fracture events. Pure tensile (mode I) - D t = 0 . Normal Traction Law.
E N D
ParFUM from an Application Perspective M. Scot Breitenfeld
Motivation • Finite element code • 3-D Cohesive/volumetric finite element (CVFE) scheme for spontaneous dynamic fracture • Uses cohesive element for fracture events
Pure tensile (mode I) - Dt = 0 Normal Traction Law Shear Traction Law
Motivation • Explicit dynamic (central difference time stepping scheme) • No large system of equations to solve • Nonlinear kinematics (large strains, large rotations) • Nonlinear constitutive models • Hyperelastic • Neo-Hookean (compressible, incompressible) • Mooney-Rivlin • Arruda-Boyce • Nonlinear constitutive laws • Viscoplastic • Original implementation used MPI
Motivation • MPI based code limitations • No adaptive load balancing • Non-trivial using MPI • Load balancing for adaptive mesh changes • insertion/activation of cohesive elements Deflection of a crack by a material interface Strong interface Weak interface (Experimental results by Xu, Huang and Rosakis, 2001)
Motivation • Load imbalance due to material models • 3D Plastic Fracture • A single edge notched specimen pulled at both ends with a ramping magnitude of 1 m/s over .01 seconds • Isosurface is the extent of the plastic zone
Motivation • A 1x1x10 bar loaded with a ramped velocity of magnitude 0. to 40. over a time period of (0.1*length of bar)/(fastest wave speed) and held constant afterward
MPI Reads in mesh created with a meshing tool Partitions the mesh Create communication lists for the processors Transfer boundary conditions to the partitioned mesh ParFUM No pre-processor needed Automatically Partitions Creates the communication list Handles the boundary conditions Application Typical Procedure for a Parallel FEM Code PRE-PROCESSOR
Application Typical Procedure for a Parallel FEM Code • MPI • Insert MPI calls to handle communications: Send, Recieves waits, etc…. • ParFUM • Solution Code • Communication calls are simplified.. Solution Code
Application Typical Procedure for a Parallel FEM Code DO j1 = 1, NumNeighProcs k = IdNeighProc(j1) CALL MPI_IRECV(frmproc(k)%rcvbuf(1),COMMON(j1)*3,& MPI_DOUBLE_PRECISION,k,10,MPI_COMM_WORLD,& req_rcv(j1),ierr) ENDDO k2 = 1 DO j1 = 1, NumNeighProcs k = IdNeighProc(j1) k3 = COMMON(j1)*3 CALL MPI_ISEND(buf(k2),k3,MPI_DOUBLE_PRECISION,& k,10,MPI_COMM_WORLD,req_snd(j1),ierr) k2 = k2 + k3 ENDDO CALL MPI_WAITALL(NumNeighProcs,req_rcv,stat_rcv,ierr) CALL MPI_WAITALL(NumNeighProcs,req_snd,stat_snd,ierr) DO j1 = 1, NumNeighProcs k = IdNeighProc(j1) k1 = 1 DO j = 1, COMMON(j1) k2 = XCom(j1)%node_list(j)*3 Rnet(k2-2)= Rnet(k2-2) + frmproc(k)%rcvbuf(k1) Rnet(k2-1)= Rnet(k2-1) + frmproc(k)%rcvbuf(k1+1) Rnet(k2) = Rnet(k2) + frmproc(k)%rcvbuf(k1+2) k1 = k1 + 3 ENDDO ENDDO • ParFUM CALL FEM_Update_Field(fid_R_net,R_net)
Application Typical Procedure for a Parallel FEM Code • MPI • Typically needed to put the mesh back together for visualization • ParFUM • Typically Not Needed • ParFUM will output the “serial” mesh Post-Processor
Conclusion • ParFUM is considerably easier then creating an MPI version • MPI is not practical (in terms of development time) for applications needing adaptive load balancing • ParFUM is continually adding new features of interest to the FE community: • Parallel Adaptive Mesh Refinement (including activation of cohesive elements) • Parallel contact detection and enforcement