[Getdp] Functions: symmetric gradients

Ruth V. Sabariego r.sabariego at ulg.ac.be
Fri Nov 25 10:34:13 CET 2011


Well, it is a bit tricky.
The  operators D1/D2 dealing with mechanics where added in relation to the basis functions.
You should use a function space where the derivatives are indicated:

FunctionSpace {
  /* Meca_u : Mechanics - Displacement ux, uy formulations */

  { Name H_u_Mec_2D ; Type Vector ;
    BasisFunction {
        /* ux = ux_n  sx_n , for all nodes */
      { Name sxn ; NameOfCoef uxn ; Function BF_NodeX ;	dFunction {BF_NodeX_D12, BF_Zero} ;
        Support DomainTot ; Entity NodesOf[ All ] ; }
      { Name syn ; NameOfCoef uyn ; Function BF_NodeY ; dFunction {BF_NodeY_D12, BF_Zero} ;
        Support DomainTot ; Entity NodesOf[ All ] ; }
    }
    Constraint {
      { NameOfCoef uxn ; EntityType NodesOf ; NameOfConstraint DeplacementX ; }
      { NameOfCoef uyn ; EntityType NodesOf ; NameOfConstraint DeplacementY ; }
    }
  }
}

And the formulation would look like:


Formulation {

  { Name Mec_u_2D ; Type FemEquation ;
    Quantity {
      { Name u ; Type Local ; NameOfSpace H_u_Mec_2D ; }
    }

    Equation {
      Galerkin { [C_m[] * Dof{D1 u}, {D1 u}  ] ; 
                 In Domain_Disp ; Jacobian JVol ; Integration GradGrad ; } 
      Galerkin { [ -F[] , {u} ] ; 
                 In Domain_Force; Jacobian JSur ; Integration GradGrad; }  
    }
  }

}



with e.g.

/* --------------------------------------------------------------------------*/

Function {
  /* Elasticity */
  //Mechanical constants E = 100 Gpa,  v = 0.33

  E[PlateINT] = 100e9 ; nu = 0.33 ;

  f[] = E[]/(1-nu^2) ; 
  C_m[#{PlateINT}] = TensorSym[ f[], nu*f[], 0, f[], 0, (1-nu)/2*f[]] ; 
  
  
   F[#{Lin_Y1}] = Vector[0,-100, 0 ];
   //F[#{Point_X1_u}] = Vector[0,-100, 0 ];
}


HTH,
Ruth



--
Dr. Ir. Ruth V. Sabariego
University of Liege, Electrical Engineering & Computer Science, 
Applied & Computational Electromagnetics (ACE),
phone: +32-4-3663737 - fax: +32-4-3662910 - http://ace.montefiore.ulg.ac.be/



On 25 Nov 2011, at 10:17, Saurabh Srivastava wrote:

> Dear Ruth, 
> 
> Thank you for a prompt response, So essentially there is no way to access the components of exterior derivative, for e.g. {d u} [1,1]  at any point in the computation?  
> 
> Since basis functions are split in this case ..can we pass {d ux} or {d uy} as arguments to functions in weak formulation?
> 
> Although one can pass mu[{d u}] as an argument to a function mu?
> 
> best,
> -saurabh
> 
> 
> 
> On Fri, Nov 25, 2011 at 7:37 AM, Ruth V. Sabariego <r.sabariego at ulg.ac.be> wrote:
> You can't use Dof{eps[{d u}]}, that is not allowed. Sorry!
> That is the reason why we split the displacement in components with a basis function per compoment: BF_NodeX, BF_NodeY and BF_NodeZ.
> 
> 
> HTH,
> Ruth
> 
> --
> Dr. Ir. Ruth V. Sabariego
> University of Liege, Electrical Engineering & Computer Science, 
> Applied & Computational Electromagnetics (ACE),
> phone: +32-4-3663737 - fax: +32-4-3662910 - http://ace.montefiore.ulg.ac.be/
> 
> 
> 
> On 25 Nov 2011, at 00:51, Saurabh Srivastava wrote:
> 
>> Hello,
>> 
>> I am interested in the elasticity example, as I realized a new operator was D1/D2 was hard-coded to obtain symmetric gradient (which are unlike curl, grad, or div) of displacements. I'm attempting to get around this using the following approach ...essentially, I compute the exterior derivative of displacement vector then pass it to a function which converts this 2nd rank tensor into a vectorial (Voigt's) notation, 
>> 
>> Thus I replace these lines ...
>> 
>> Formulation {
>>   { Name Mec2D_u ; Type FemEquation ;
>>     Quantity {
>>       { Name u ; Type Local ; NameOfSpace H_u_Mec2D ; }
>>     }
>>     Equation {
>>     //gu = Tensor[{d u}];
>>       Galerkin { [ C_m[] * Dof{D1 u}, {D1 u} ] ;
>>                  In Domain_Disp ; Jacobian Vol ; Integration GradGrad ; } 
>>       Galerkin { [ -F[] , {u} ] ;     
>>                  In Domain_Force; Jacobian SurLinVol; Integration GradGrad; }  
>>     }
>>   }
>> }
>> 
>> -----------------with these lines------------------------
>> Function {
>>   eps[] = Vector[CompXX[$1], CompYY[$1], CompXY[$1] ];
>> }
>> 
>> Formulation {
>>   { Name Mec2D_uxuy ; Type FemEquation ;
>>     Quantity {
>>       //{ Name ux; Type Local ; NameOfSpace H_uxuy_Mec2D ; }
>>       //{ Name uy; Type Local ; NameOfSpace H_uxuy_Mec2D ; }
>>       { Name u ; Type Local ; NameOfSpace H_u_Mec2D ; }
>>     }
>>     Equation {
>>       Galerkin { [ C_m[] * Dof{eps[{d u}]}, {eps[{d u}]} ]; //line 175
>>                  In Domain_Disp ; Jacobian Vol ; Integration GradGrad ; } 
>>       Galerkin { [ -F[] , {u} ] ;     
>>                  In Domain_Force; Jacobian SurLinVol; Integration GradGrad; } 
>>     }
>>   }
>> 
>> But I get the following error during pre-processing...
>> 
>> GetDP   : 'C:/Documents and Settings/xx/Desktop/getdp-2.1.1-Win32c/elasticity2d2.pro', line 175 : syntax error ([)
>> 
>> Doesn't looks like its any bracketing issue as i fiddled around with that, What am I doing wrong?
>> 
>> Any help is appreciated.
>> 
>> Thank You,
>> -ss
>> 
>> 
>> 
>> 
>> _______________________________________________
>> getdp mailing list
>> getdp at geuz.org
>> http://www.geuz.org/mailman/listinfo/getdp
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.geuz.org/pipermail/getdp/attachments/20111125/c62e6007/attachment.html>