Dear all!
I encountered a mistake.
When I calculate an integral :
fv=(div(grad(u_n_1)))**2*dx
When the grid is divided into triangles, code is OK.
But the grid is divided into quadrilateral , will get :
ValueError: ReferenceGrad can only wrap a reference frame type!
This leaves me very puzzled.
code are as follows:
from mpi4py import MPI
import numpy as np
from petsc4py import PETSc
import ufl
from dolfinx import default_scalar_type, fem, la
from dolfinx.cpp.fem import compute_integration_domains
from dolfinx.mesh import (
GhostMode,
compute_incident_entities,
create_box,
create_rectangle,
create_submesh,
create_unit_cube,
create_unit_interval,
create_unit_square,
locate_entities,
locate_entities_boundary,
meshtags,
)
from mpi4py import MPI
from petsc4py import PETSc
import numpy as np
from dolfinx import default_real_type, fem, io, mesh,default_scalar_type
from dolfinx.fem.petsc import assemble_matrix, assemble_vector
from ufl import (CellDiameter, FacetNormal, TestFunction, TrialFunction, avg,
conditional, div, dot, dS, ds, dx, grad, gt, inner, outer,
TrialFunctions,TestFunctions,curl,cross)
import ufl
from dolfinx.io import gmshio,XDMFFile
from basix.ufl import element,mixed_element
from dolfinx.fem.petsc import (apply_lifting, assemble_matrix, assemble_vector,
create_vector, set_bc,create_matrix,)
import time
import os
import dolfinx
startT=time.time()
def coeff_expr(x):
values = np.zeros((2, x.shape[1]), dtype=PETSc.ScalarType)
values[0]=x[0]
values[1]=x[1]
return values
def coeff_expr2(x):
values = np.zeros((2, x.shape[1]), dtype=PETSc.ScalarType)
values[0]=x[0]**2
values[1]=x[1]**2
return values
comm = MPI.COMM_WORLD
msh = create_unit_square(comm, 2, 2, ghost_mode=GhostMode.none,cell_type=mesh.CellType.triangle)
#mesh.CellType.quadrilateral
#CellType.triangle
U_space=fem.functionspace(msh,("RT",2))
u_n_1=fem.Function(U_space)
u_n_2=fem.Function(U_space)
u_D = fem.Function(U_space)
comm=msh.comm
fv=(div(grad(u_n_1)))**2*dx
fv=fem.form(fv)
FV=np.sqrt(comm.allreduce(fem.assemble_scalar(fv), MPI.SUM))
print('FV is',FV)
Any comments will be appreciated!Thanks!