Actual source code: ex8.c
 
   petsc-3.7.7 2017-09-25
   
  2: static char help[] = "Tests imbedding DMComposites inside DMComposites.\n\n";
  4: #include <petscdm.h>
  5: #include <petscdmda.h>
  6: #include <petscdmcomposite.h>
  8: typedef struct {
  9:   DM load;
 10:   DM L1,L2;
 11: } Load;
 13: PetscErrorCode LoadCreate(PetscInt n1, PetscInt n2, Load *load)
 14: {
 17:   PetscNew(&load);
 18:   DMDACreate1d(PETSC_COMM_SELF,DM_BOUNDARY_NONE,n1,1,1,NULL,&load->L1);
 19:   DMDACreate1d(PETSC_COMM_SELF,DM_BOUNDARY_NONE,n1,1,1,NULL,&load->L2);
 20:   DMCompositeCreate(PETSC_COMM_SELF,&load->load);
 21:   return(0);
 22: }
 24: typedef struct {
 25:   DM network;
 26:   DM n1,n2;
 27: } Network;
 29: typedef struct {
 30:   DM generator;
 31:   DM g1,g2;
 32: } Generator;
 34: typedef struct {
 35:   DM        city;
 36:   Load      load;
 37:   Network   network;
 38:   Generator generator;
 39: } City;
 41: typedef struct {
 42:   DM       state;
 43:   City     *cities;
 44:   PetscInt n;
 45: } State;
 47: typedef struct {
 48:   DM       unitedstates;
 49:   State    *states;
 50:   PetscInt n;
 51: } UnitedStates;
 55: int main(int argc,char **argv)
 56: {
 58:   UnitedStates   unitedstates;
 60:   PetscInitialize(&argc,&argv,(char*)0,help);
 62:   PetscFinalize();
 63:   return 0;
 64: }