Hi, All,
I have a question of behavior of FESystem with 2 vectors and 2 scalars, my
original problem is to solve:
[image: 56.JPG] <about:invalid#zClosurez>
for \phi, \sigma, \mu, \gamma, I choose FESystem to describe the
information of them
FESystem<dim> fe;
[...]
fe (FE_DGQ<dim>(degree), 1,
FE_RaviartThomas<dim>(degree), 1,
FE_DGQ<dim>(degree), 1,
FE_RaviartThomas<dim>(degree), 1),
The test code is LittleCase0-5.cc, and after make run, the error
information is:
Linking CXX executable Case0-5
[ 50%] Built target Case0-5
[100%] Run with Debug configuration
before_start0
dof 9-1
dof 9-2 6|112
dof 9-3
dof 9-4
dof 9-5
--------------------------------------------------------
An error occurred in line <1746> of file
</home/yucan/boost/deal.ii-8.5.1/src/source/dofs/dof_tools.cc> in function
void dealii::DoFTools::count_dofs_per_block(const DoFHandlerType&,
std::vector<unsigned int>&, const std::vector<unsigned int>&) [with
DoFHandlerType = dealii::DoFHandler<2>]
The violated condition was:
target_block.size()==fe.n_blocks()
Additional information:
Dimension 6 not equal to 4.
to test the behavior of FESystem with 2 vectors and 2 scalars, I choose
another FESystem:
FESystem<dim> fe;
[...]
fe (FE_Q<dim>(degree), 1,
FE_Q<dim>(degree), dim,
FE_Q<dim>(degree), 1,
FE_Q<dim>(degree), dim),
the code is LittleCase0-4.cc, and the result after "make run" is:
Linking CXX executable Case0-4
[ 50%] Built target Case0-4
[100%] Run with Debug configuration
before_start0
dof 9-1
dof 9-2 6|54
dof 9-3
dof 9-4
dof 9-5
dof 9-6
dof 9-7
Number of active cells: 4
Number of degrees of freedom: 54 (9+27|9+9)
dof 9-8
dof 9-9
dof 9-10
dof 9-11
dof 9-12
dof 9-13
setup_dofs0
[100%] Built target run
My question is:
1. Can FESystem countain 2 vectors and 2 scalars? If so, how to make
"dof_handler", "dofs_per_block", and "block_component (target_block)"
correctly matching? As above, I make some faults. For example, in
LittleCase0-4.cc, I use this defination for "block_component"
(target_block):
std::vector<unsigned int> block_component (2*dim+2,1);
block_component[0] = 0;
block_component[1] = 1;
block_component[dim+1] = 2;//=3-1
block_component[dim+2] = 3;
and te result is
Number of degrees of freedom: 54 (9+27|9+9)
but it should be: " 54 (9+18 | 9+18) ", I don't know how to control it as I
cannot set "std::vector<unsigned int> block_component (2*dim+2,1,3);",
where "1" and "3" means that the vector block should be in the first and
third block in the whole.
2. Can I use RT element by this way (in Block)? If so, how to correct the
LittleCase0-5.cc? If not, how to implement the original problem? Maybe use
2 FESystem fe_1, fe_2, both of which contain only 1 vector (RT element) and
1 scalar (DG element)?
Thanks in advance!
Best,
Chucui
--
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see
https://groups.google.com/d/forum/dealii?hl=en
---
You received this message because you are subscribed to the Google Groups
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.