[petsc-users] DMPlex with spring elements

Abhyankar, Shrirang G. abhyshr at mcs.anl.gov
Wed Sep 24 21:52:07 CDT 2014


If you have equations only at the nodes, with a part of it contributed by the edges (springs),  then you can use DMNetwork. If you are planning to have equations for the beads in the future, or other higher layers, then DMPlex has better functionality to manage that.

Shri

From: Miguel Angel Salazar de Troya <salazardetroya at gmail.com<mailto:salazardetroya at gmail.com>>
Date: Wed, 24 Sep 2014 17:38:11 -0500
To: Shri <abhyshr at mcs.anl.gov<mailto:abhyshr at mcs.anl.gov>>
Cc: "petsc-users at mcs.anl.gov<mailto:petsc-users at mcs.anl.gov>" <petsc-users at mcs.anl.gov<mailto:petsc-users at mcs.anl.gov>>
Subject: Re: [petsc-users] DMPlex with spring elements

Thanks for your response. I'm attaching a pdf with a description of the model. The description of the PetscSection is necessary for the DMNetwork? It looks like DMNetwork does not use a PetscSection.

Miguel

On Wed, Sep 24, 2014 at 1:43 PM, Abhyankar, Shrirang G. <abhyshr at mcs.anl.gov<mailto:abhyshr at mcs.anl.gov>> wrote:

>Thanks for your response. My discretization is based on spring elements.
>For the linear one dimensional case in which each spring has a
>coefficient k, their jacobian would be this two by two matrix.
>[  k    -k ]
>[ -k     k ]
>
>and the internal force
>
>[ k ( Ui - Uj) ]
>[ k ( Uj - Ui) ]
>
>where Ui and Uj are the node displacements (just one displacement per
>node because it's one dimensional)
>
>For the two dimensional case, assuming small deformations, we have a
>four-by-four matrix. Each node has two degrees of freedom. We obtain it
>by performing the outer product of the vector (t , -t) where "t" is the
>vector that connects both nodes in a spring. This is for the case of
>small deformations. I would need to assemble each spring contribution to
>the jacobian and the residual like they were finite elements. The springs
>share nodes, that's how they are connected. This example is just the
>linear case, I will have to implement a nonlinear case in a similar
>fashion.
>
>Seeing the DMNetwork example, I think it's what I need, although I don't
>know much of power electric grids and it's hard for me to understand
>what's going on. Do you have a good reference to be able to follow the
>code?

>
Please see the attached document which has more description of DMNetwork
and the equations for the power grid example. I don't have anything that
describes how the power grid example is implemented.

>For example, why are they adding components to the edges?
>
>475:     DMNetworkAddComponent
><http://www.mcs.anl.gov/petsc/petsc-as/petsc-current/docs/manualpages/DM/D
>MNetworkAddComponent.html#DMNetworkAddComponent>(networkdm,i,componentkey[
>0],&pfdata.branch[i-eStart]);Miguel

Each edge or node can have several components (limited to 10) attached to
it. The term components, taken from the circuit terminology, refers to the
elements of a network. For example, a component could be a resistor,
inductor, spring, or even edge/vertex weights (for graph problems). For
code implementation, component is a data structure that holds the data
needed for the residual, Jacobian, or any other function evaluation. In
the case of power grid, there are 4 components: branches or transmission
lines connecting nodes, buses or nodes, generators that are incident at a
subset of the nodes, and loads that are also incident at a subset of the
nodes. Each of the these components are defined by their data structures
given in pf.h.

DMNetwork is a wrapper class of DMPlex specifically for network
applications that can be solely described using nodes, edges, and their
associated components. If you have a PDE, or need FEM, or need other
advanced features then DMPlex would be suitable. Please send us a write-up
of your equations so that we can assist you better.

Shri


>
>
>On Tue, Sep 23, 2014 at 11:13 PM, Abhyankar, Shrirang G.
><abhyshr at mcs.anl.gov<mailto:abhyshr at mcs.anl.gov>> wrote:
>
>You may also want to take a look at the DMNetwork framework that can be
>used for general unstructured networks that don't use PDEs. Its
>description is given in the manual and an example is in
>src/snes/examples/tutorials/network/pflow.
>
>Shri
>
>From:  Matthew Knepley <knepley at gmail.com<mailto:knepley at gmail.com>>
>Date:  Tue, 23 Sep 2014 22:40:52 -0400
>To:  Miguel Angel Salazar de Troya <salazardetroya at gmail.com<mailto:salazardetroya at gmail.com>>
>Cc:  "petsc-users at mcs.anl.gov<mailto:petsc-users at mcs.anl.gov>" <petsc-users at mcs.anl.gov<mailto:petsc-users at mcs.anl.gov>>
>Subject:  Re: [petsc-users] DMPlex with spring elements
>
>
>>On Tue, Sep 23, 2014 at 4:01 PM, Miguel Angel Salazar de Troya
>><salazardetroya at gmail.com<mailto:salazardetroya at gmail.com>> wrote:
>>
>>Hi all
>>I was wondering if it could be possible to build a model similar to the
>>example snes/ex12.c, but with spring elements (for elasticity) instead of
>>simplicial elements. Spring elements in a grid, therefore each element
>>would have two nodes and each node two components. There would be more
>>differences, because instead of calling the functions f0,f1,g0,g1,g2 and
>>g3 to build the residual and the jacobian, I would call a routine that
>>would build the residual vector and the jacobian matrix directly. I would
>>not have shape functions whatsoever. My problem is discrete, I don't have
>>a PDE and my equations are algebraic. What is the best way in petsc to
>>solve this problem? Is there any example that I can follow? Thanks in
>>advance
>>
>>
>>
>>
>>Yes, ex12 is fairly specific to FEM. However, I think the right tools for
>>what you want are
>>DMPlex and PetscSection. Here is how I would proceed:
>>
>>  1) Make a DMPlex that encodes a simple network that you wish to
>>simulate
>>
>>  2) Make a PetscSection that gets the data layout right. Its hard from
>>the above
>>      for me to understand where you degrees of freedom actually are.
>>This is usually
>>      the hard part.
>>
>>  3) Calculate the residual, so you can check an exact solution. Here you
>>use the
>>      PetscSectionGetDof/Offset() for each mesh piece that you are
>>interested in. Again,
>>      its hard to be more specific when I do not understand your
>>discretization.
>>
>>  Thanks,
>>
>>    Matt
>>
>>
>>Miguel
>>
>>
>>
>>--
>>Miguel Angel Salazar de Troya
>>Graduate Research Assistant
>>Department of Mechanical Science and Engineering
>>University of Illinois at Urbana-Champaign
>
>
>>(217) 550-2360 <tel:%28217%29%20550-2360>
>>salaza11 at illinois.edu<mailto:salaza11 at illinois.edu>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>--
>>What most experimenters take for granted before they begin their
>>experiments is infinitely more interesting than any results to which
>>their experiments lead.
>>-- Norbert Wiener
>
>
>
>
>
>
>
>
>
>--
>Miguel Angel Salazar de Troya
>Graduate Research Assistant
>Department of Mechanical Science and Engineering
>University of Illinois at Urbana-Champaign
>(217) 550-2360
>salaza11 at illinois.edu<mailto:salaza11 at illinois.edu>




--
Miguel Angel Salazar de Troya
Graduate Research Assistant
Department of Mechanical Science and Engineering
University of Illinois at Urbana-Champaign
(217) 550-2360
salaza11 at illinois.edu<mailto:salaza11 at illinois.edu>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20140925/cdf0d9e7/attachment.html>


More information about the petsc-users mailing list