Hi, 

I am trying to assemble a matrix for a 1-D problem.  Based on previous threads 
about 1-D problems, I have avoided using the MeshWorker routines and coded 
the assembly.  I would like to make use of a set of functions that I already 
have for assembling coefficients on a local matrix which takes a FullMatrix 
object and an FEValuesBase object to extract the local FE data, but for a 
single component.  

Since my problem is nonlinear and multi-component, I access the block data and 
set up the assembly as such:

Initialize an FEValues object with my system of finite elements and quadrature 
formula, loop over all the cells with the dof_handler object (which reflects 
the dofs for the whole system), reinitialize the fe_values object with the 
cell data, get the local solution values from the last iteration (nonlinear 
problem) and finally, call a function to assemble the cell matrix by 
component (i.e. using a FullMatrix and FEvaluesBase that have a size of one 
block) 
The relevant code is below.


FEValues<dim> fe_values (fe_sys, quadrature_formula,
                                        update_values   | update_gradients |
                                        update_quadrature_points | 
update_JxW_values);

typename DoFHandler<dim>::active_cell_iterator 
        cell = dof_handler.begin_active(),
        endc = dof_handler.end();

for (; cell!=endc; ++cell)
{
        fe_values.reinit(cell);
        fe_values.get_function_values(solution,local_solution_values);
        fe_values.get_function_gradients (solution,local_solution_gradients);

        // assemble cell matrix component-wise
        // assemble_cell_matrix (local_solution_values, 
local_solution_gradients, 
fe_values);

        // assemble global matrix
}


Now for my question.  Is there any way to extract FEValuesBase objects for 
each individual component (to get the dofs_per_cell, shape function data, 
etc.), like MeshWorker::IntegrationInfo but without using the FEValuesViews 
method (step-20) or do I need to code a new assembly procedure for the 
problem?  

I have tried quick fixes like declaring new FEvalues objects with a 
one-component FiniteElement, but this doesn't match the iterator when I call 
reinit(cell).

Any ideas?  Thanks in advance for your help.

Peter

_______________________________________________
dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii

Reply via email to