예제 #1
0
//************************************************************************************
//************************************************************************************
void Electrostatic2D::GetDofList(DofsVectorType& ElementalDofList,ProcessInfo& CurrentProcessInfo)
{
    unsigned int number_of_nodes = GetGeometry().PointsNumber();
    if(ElementalDofList.size() != number_of_nodes)
        ElementalDofList.resize(number_of_nodes);

    for (unsigned int i=0; i<number_of_nodes; i++)
        ElementalDofList[i] = GetGeometry()[i].pGetDof(ELECTROSTATIC_POTENTIAL);

}
void PeriodicConditionLM2D2N::GetDofList(DofsVectorType& ConditionalDofList,ProcessInfo& CurrentProcessInfo)
{
	if(ConditionalDofList.size() != 6) ConditionalDofList.resize(6);
	GeometryType& geom = GetGeometry();
	
	ConditionalDofList[0] = geom[0].pGetDof( DISPLACEMENT_X );
	ConditionalDofList[1] = geom[0].pGetDof( DISPLACEMENT_Y );
	
	ConditionalDofList[2] = geom[1].pGetDof( DISPLACEMENT_X );
	ConditionalDofList[3] = geom[1].pGetDof( DISPLACEMENT_Y );
	
	ConditionalDofList[4] = geom[0].pGetDof( DISPLACEMENT_LAGRANGE_X );
	ConditionalDofList[5] = geom[0].pGetDof( DISPLACEMENT_LAGRANGE_Y );
}
//************************************************************************************
//************************************************************************************
void UpdatedLagrangianFluid3Dinc::GetDofList(DofsVectorType& ElementalDofList,ProcessInfo& CurrentProcessInfo)
{
    unsigned int number_of_nodes = GetGeometry().PointsNumber();
    unsigned int dim = 3;

    if(ElementalDofList.size() != number_of_nodes*dim)
        ElementalDofList.resize(number_of_nodes*dim);

    for (unsigned int i=0; i<number_of_nodes; i++)
    {
        ElementalDofList[i*dim] = GetGeometry()[i].pGetDof(DISPLACEMENT_X);
        ElementalDofList[i*dim+1] = GetGeometry()[i].pGetDof(DISPLACEMENT_Y);
        ElementalDofList[i*dim+2] = GetGeometry()[i].pGetDof(DISPLACEMENT_Z);
    }
}
void TwoStepPeriodicCondition<TDim>::GetPressureDofList(DofsVectorType& rElementalDofList,
                                              ProcessInfo& rCurrentProcessInfo)
{
    GeometryType& rGeom = this->GetGeometry();
    const SizeType NumNodes = rGeom.PointsNumber();

    if (rElementalDofList.size() != NumNodes)
        rElementalDofList.resize(NumNodes);

    SizeType LocalIndex = 0;

    for (SizeType i = 0; i < NumNodes; ++i)
    {
        rElementalDofList[LocalIndex++] = rGeom[i].pGetDof(PRESSURE);
    }
}
예제 #5
0
//************************************************************************************
//************************************************************************************
void Monolithic2DNeumann::GetDofList(DofsVectorType& ElementalDofList,ProcessInfo& CurrentProcessInfo)
{
    KRATOS_TRY
    unsigned int number_of_nodes = GetGeometry().PointsNumber();
    unsigned int dim = 2;
    unsigned int node_size = dim;

    if(ElementalDofList.size() != number_of_nodes*node_size)
        ElementalDofList.resize(number_of_nodes*node_size);

    for (unsigned int i=0; i<number_of_nodes; i++)
    {
        ElementalDofList[i*node_size] = GetGeometry()[i].pGetDof(VELOCITY_X);
        ElementalDofList[i*node_size+1] = GetGeometry()[i].pGetDof(VELOCITY_Y);
    }
    KRATOS_CATCH("");
}
void TwoStepPeriodicCondition<2>::GetVelocityDofList(DofsVectorType& rElementalDofList,
                                           ProcessInfo& rCurrentProcessInfo)
{
    GeometryType& rGeom = this->GetGeometry();
    const SizeType NumNodes = rGeom.PointsNumber();
    const SizeType LocalSize = 2*NumNodes;

    if (rElementalDofList.size() != LocalSize)
        rElementalDofList.resize(LocalSize);

    SizeType LocalIndex = 0;

    for (SizeType i = 0; i < NumNodes; ++i)
    {
        rElementalDofList[LocalIndex++] = rGeom[i].pGetDof(VELOCITY_X);
        rElementalDofList[LocalIndex++] = rGeom[i].pGetDof(VELOCITY_Y);
    }
}
예제 #7
0
//************************************************************************************
//************************************************************************************
void NDFluid2DCrankNicolson::GetDofList(DofsVectorType& ElementalDofList,ProcessInfo& CurrentProcessInfo)
{
    unsigned int number_of_nodes = GetGeometry().PointsNumber();
    if(ElementalDofList.size() != number_of_nodes)
        ElementalDofList.resize(number_of_nodes);

    unsigned int FractionalStepNumber = CurrentProcessInfo[FRACTIONAL_STEP];

    if(FractionalStepNumber == 1) //step 1
        for (unsigned int i=0; i<number_of_nodes; i++)
            ElementalDofList[i] = GetGeometry()[i].pGetDof(FRACT_VEL_X);
    else if(FractionalStepNumber == 2) //step 2
        for (unsigned int i=0; i<number_of_nodes; i++)
            ElementalDofList[i] = GetGeometry()[i].pGetDof(FRACT_VEL_Y);
    else if(FractionalStepNumber == 4) // pressure correction step
        for (unsigned int i=0; i<number_of_nodes; i++)
            ElementalDofList[i] = GetGeometry()[i].pGetDof(PRESSURE);

}