People who code: we want your input. Take the Survey

New answers tagged

0

Its not the summation that is wrong, but the lack of indices inside it. Below this expression on their site they define: $$\epsilon(\mathbf{u})=\frac{1}{2}([\nabla\mathbf{u}]+[\nabla\mathbf{u}]^{\mathrm{T}})$$ So $\epsilon(\mathbf{u})$ is a matrix formed from the symmetrized gradient of $\mathbf{u}$. But to get the sum from the earlier expression, we want to ...


3

A dyadic product takes as input two vectors and outputs a second order tensor. This is what I know as a dyadic product, and a dyad is the term $\mathbf{a}\mathbf{b}$. A general second order tensor can be written as a linear combination of dyads. Commonly the symbol $\otimes$ is referred as the tensor product and it outputs higher-order tensors. I think that ...


2

The first equality you wrote is not correct, as noted by other users. However, what I think you want to know is why $(I:A)I = (I \otimes I)A$. You can show this just by using dyads properties. $$(B \otimes B) : A =(B_{ij}B_{kl} e_i \otimes e_j \otimes e_k \otimes e_l):(A_{mn} e_m \otimes e_n) = B_{ij}B_{kl} A_{mn} \delta_{km} \delta_{ln} e_i \otimes e_j = B_{...


0

First, I think that we should write the problem as $$-\nabla(\varepsilon \nabla \phi) = \rho + \sigma\, .$$ Then, the weak form would be $$\int\limits_\Omega \varepsilon \nabla \phi \nabla w d\Omega - \int\limits_{\partial\Omega} \varepsilon w\nabla\phi\cdot\hat{n}d\Gamma = \int\limits_\Omega f w d\Omega\, .$$ As you mentioned, the second term vanishes for ...


2

In 2D your volume part consists of a double integral, whereas the surface part is a standard line integral. Generally this is described with tensorial notations. If you consider the Cartesian case, the volume part results in a mass matrix similar to $M_{\Omega}\equiv \mathbf{M}_{\text{1}} \otimes \mathbf{M}_{\text{1}}$, whereas the surface part results in a ...


2

Contrary to what @user21's answer, I don't think that you need to do anything special for point loads. Let's see why. A point load can be represented as a Dirac delta "function". So, in your case it would be something like $$R = \rho \delta(x - x_i)\, ,$$ where $\rho$ is the intensity of the source and $x_i$ is the position. If we use a weighted ...


1

Seen that you also have an account over at mathematica stackexchange I am going to show an implementation using Mathematica. This is certainly not the only way you can do it but hopefully gets you started. We start by creating a 1D mesh Needs["NDSolve`FEM`"] region = Line[{{0}, {1}}]; includePoints = {{1/3}, {2/3}}; mesh = ToElementMesh[region, &...


3

You've got it the wrong way around, though the principles are right. In your write-up, you loop over all $i$ and $j$ and then ask which cells you need to consider to compute a particular matrix entry $M_{ij}$. This is expensive because most matrix entries are zero, and because you would have to visit the same cell multiple times. In practice, you loop over ...


1

I didn't go through your steps, I am kind of short on time. Though, I will check the math if I am free this evening. Here are my book suggestions. "The Finite Element Method: Theory, Implementation, and Applications" by Larsson and Bengzon is beginner-friendly. Also "Understanding and implementing the finite element method" by Gockenbach ...


2

This landmark paper by George proves that a nested dissection ordering of a regular, four-node element, finite element mesh produces minimum fill-in. Although it is straightforward to produce such an ordering by inspection, the graph algorithms that attempt to do this for a general sparse structure only approximate this ordering. Assuming you are obtaining ...


7

Your reasoning for vector type equation is correct when you wrote it down for each individual component. What occurs is that you need to write your interpolation basis function and your test function as vectors. Hence, starting from: $$\nabla^2 \mathbf{u} =0 $$ in strong integral form is: $$\int \mathbf{v} \cdot \nabla^2 \mathbf{u} \, d\Omega = 0 $$ where $\...


2

ultimately the matrix you create in step 1 is where you're going to construct the global stiffness matrix, which is a direct summation of all the element stiffness matrices. This global matrix is going to be used to solve a linear system $A x = b$, where $A$ is the global stiffness matrix you just constructed by "adding" all the element stiffness ...


0

Sparse approximate inverse (SAI) and incomplete LU factorization (ILU) are standard approaches to preconditioning iterative solutions of large sparse matrix equations. See https://www5.in.tum.de/lehre/vorlesungen/parnum/WS10/PARNUM_10.pdf for more details.


5

As a preamble, I would not expect that splitting $E$ into real/imaginary parts is very profitable. Normally, block 2x2 systems are motivated because one block of unknowns is "easier" to solve than the other in some sense (better conditioned? smaller in cardinality? etc). This is not the case for time-harmonic Maxwell, I think you'd be better off ...


Top 50 recent answers are included