# 2nd order elements and frictional contact

**URL:** <https://www.simscale.com/forum/t/2nd-order-elements-and-frictional-contact/29430>\
**Category:** Solid Mechanics / FEA\
**Created:** [June 24, 2016, 8:40pm UTC](https://www.simscale.com/forum/t/2nd-order-elements-and-frictional-contact/29430 "2016-06-24T20:40:03Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![potyka\_csaba](https://www.simscale.com/forum/letter_avatar/potyka_csaba/32/5_5575768a8748004e209b776fc1b2916d.png) [@potyka\_csaba](https://www.simscale.com/forum/u/potyka_csaba)\
**Post date:** [June 24, 2016, 8:40pm UTC](https://www.simscale.com/forum/t/2nd-order-elements-and-frictional-contact/29430/1 "2016-06-24T20:40:03Z")

</div>

Hello Ahmed and Anna,

I have a project: ['Bolt connection' simulation project by potyka\_csaba](https://www.simscale.com/forum/t/bolt-connection-simulation-project-by-potyka-csaba/28331)

Here I have a solution with frictional contact for 1st order elements. For this I have already the results. But of course I would like to update the level of the simulation. Unfortunately until now somehow the model with 2nd order elements and frictional contacts just don’t wan to run.  
Do you have any idea what should be corrected in the model (I think a setting is badly used by myself 🙂 )?

Thanks in advance for your help!

Bests,  
Csaba

---

<div class="post-metadata">

**Author:** ![ahmedhussain18](https://www.simscale.com/forum/user_avatar/www.simscale.com/ahmedhussain18/32/140_2.png) [@ahmedhussain18](https://www.simscale.com/forum/u/ahmedhussain18)\
**Post date:** [June 27, 2016, 9:38am UTC](https://www.simscale.com/forum/t/2nd-order-elements-and-frictional-contact/29430/2 "2016-06-27T09:38:07Z")

</div>

Hey Csaba (@potyka_csaba)!

I had a look at your project. There are certain things you can do to make it work.

1. In your first order case, you have swapped master and slave entities. This you can do here also.

2. You can delete the other elastic supports while just keeping one. For example, keep only _Elastic 1_ in your case. Since you have bonded contacts between all the nut and bolts, this elastic support will be enough for holding it.

3. Under **Equation solver** _MUMPS_, there is an option that says _Stop if singular_. Make it false. This will enable to run your simulation further even if there is singularity. And this singularity is mostly due to rigid body motion and if the elastic support is too low that it can’t solve this in very first iteration.

4. If result accuracy isn’t important in the first trials, you can increase your _relative_ error _tolerance_ to _0.001_ to attain fast convergence.

5. Switch to _Auto_ timestepping with _Initial timstep length_ of _0.1_. Using _Manual_ will not allow the solver to cut the timestep in case of divergence which will for sure happen at start. Furthermore, use _8_ core machine and _2_ cores for computation in order to avoid memory problems.

6. Delete _cauchy stress_ solution field under **Result Control** if you don’t need it. This will save you some time.

I hope this helps. If you still face some problem, feel free to ask.

Best,  
Ahmed

---

<div class="post-metadata">

**Author:** ![potyka\_csaba](https://www.simscale.com/forum/letter_avatar/potyka_csaba/32/5_5575768a8748004e209b776fc1b2916d.png) [@potyka\_csaba](https://www.simscale.com/forum/u/potyka_csaba)\
**Post date:** [June 28, 2016, 4:17am UTC](https://www.simscale.com/forum/t/2nd-order-elements-and-frictional-contact/29430/3 "2016-06-28T04:17:52Z")

</div>

Hello Ahmed,

I tried all of the suggested changes. The run was not successfull and the log file contains no information at all. Do you have any further idea? Thanks a lot for your help!

Bests,  
Csaba

---

<div class="post-metadata">

**Author:** ![BenLewis](https://www.simscale.com/forum/user_avatar/www.simscale.com/benlewis/32/99_2.png) [@BenLewis](https://www.simscale.com/forum/u/BenLewis)\
**Post date:** [June 28, 2016, 5:08am UTC](https://www.simscale.com/forum/t/2nd-order-elements-and-frictional-contact/29430/4 "2016-06-28T05:08:51Z")

</div>

Hi @potyka_csaba, I’ve never been able to get a second order mesh with physical contacts to solve. Even simple test cases do not solve.

Does anybody know of any working examples in the public library with this combination?

---

<div class="post-metadata">

**Author:** ![ahmedhussain18](https://www.simscale.com/forum/user_avatar/www.simscale.com/ahmedhussain18/32/140_2.png) [@ahmedhussain18](https://www.simscale.com/forum/u/ahmedhussain18)\
**Post date:** [June 28, 2016, 8:01am UTC](https://www.simscale.com/forum/t/2nd-order-elements-and-frictional-contact/29430/5 "2016-06-28T08:01:05Z")

</div>

Hey @potyka_csaba @BenLewis! Well that’s not always the case. This time I was lucky enough to make it run with second order elements 😄

@potyka_csaba, I don’t know why it crashed in your case, but it did work in my case with same settings. Please have a look here: [Bolt connection - SimScale](https://www.simscale.com/projects/ahmedhussain18/bolt_connection/)

You can just follow the same setup in case you missed something 😉

Best,  
Ahmed

---

<div class="post-metadata">

**Author:** ![BenLewis](https://www.simscale.com/forum/user_avatar/www.simscale.com/benlewis/32/99_2.png) [@BenLewis](https://www.simscale.com/forum/u/BenLewis)\
**Post date:** [June 28, 2016, 10:24am UTC](https://www.simscale.com/forum/t/2nd-order-elements-and-frictional-contact/29430/6 "2016-06-28T10:24:16Z")

</div>

Hi @ahmedhussain18, this is good news! I’ve been wanting to use this functionality for a long time and until now I did not think it was possible. I think the setting I was missing was “Stop if singular = FALSE”. I’ll give it a try.

---

<div class="post-metadata">

**Author:** ![ahmedhussain18](https://www.simscale.com/forum/user_avatar/www.simscale.com/ahmedhussain18/32/140_2.png) [@ahmedhussain18](https://www.simscale.com/forum/u/ahmedhussain18)\
**Post date:** [June 28, 2016, 10:30am UTC](https://www.simscale.com/forum/t/2nd-order-elements-and-frictional-contact/29430/7 "2016-06-28T10:30:01Z")

</div>

Hey @BenLewis! well this is not exactly the case. In my other several cases, even putting it to false didn’t help. I think this case is quite simple due to which it worked. But if there is large sliding involved, it is HARD to converge!! 😞

---

<div class="post-metadata">

**Author:** ![potyka\_csaba](https://www.simscale.com/forum/letter_avatar/potyka_csaba/32/5_5575768a8748004e209b776fc1b2916d.png) [@potyka\_csaba](https://www.simscale.com/forum/u/potyka_csaba)\
**Post date:** [June 29, 2016, 4:36am UTC](https://www.simscale.com/forum/t/2nd-order-elements-and-frictional-contact/29430/8 "2016-06-29T04:36:51Z")

</div>

Hello @BenLewis & @ahmedhussain18,

As Ahmad wrote, the simulation was really running. The only difference what I recognized between Ahmeds and my settings was the Penalty coefficient. By Ahmed it was 100000000000, while by me it was 1000000000000. I changed it and the run was made perfectly and I have results. Thanks a lot for this amazing support work of the whole SimScale team and especial for @ahmedhussain18!

Yet I have further questions by the postprocessing:

1. How can I create plots in deformed state and how can I set the value of the deformation scale (1x, 2x, 10x, etc…)
2. What are the units of the results? von Mises; displacement; nodal force;
3. Do you have a documentation where I can read for example what do you mean under “total non linear strain”?
4. Do you have an idea how could I check whether the 0.1 mm fictitious clearance between the physical contacts really tok place? Until now I failed to do this anyhow I tried.

Thanks in advance for your help!

Bests,  
Csaba

---

<div class="post-metadata">

**Author:** ![BenLewis](https://www.simscale.com/forum/user_avatar/www.simscale.com/benlewis/32/99_2.png) [@BenLewis](https://www.simscale.com/forum/u/BenLewis)\
**Post date:** [June 29, 2016, 6:07am UTC](https://www.simscale.com/forum/t/2nd-order-elements-and-frictional-contact/29430/9 "2016-06-29T06:07:45Z")

</div>

Hi @potyka_csaba,

> [@potyka\_csaba](#):
>
> 1. How can I create plots in deformed state and how can I set the value of the deformation scale (1x, 2x, 10x, etc…)

You can use the “WarpByVector” filter in the online post processor and in ParaView. In ParaView you will find it under Filters \> Alphabetical \> Warp By Vector. You will need to use the **displacement** vector for scaling and enter a **scaling factor** for the magnitude of the deformation.

 ![](https://www.simscale.com/forum/uploads/default/original/2X/7/74328f4b44c4635ed3ff75aa09a563e5cb09e4a0.png) 

> [@potyka\_csaba](#):
>
> 1. What are the units of the results? von Mises; displacement; nodal force;

SimScale uses SI units (for simulation set up and results):  
mass: **kg**  
length: **m**  
time: **s**  
force: **N**  
stress: **Pa**  
energy: **J**

> [@potyka\_csaba](#):
>
> 1. Do you have a documentation where I can read for example what do you mean under “total non linear strain”?

I not aware of any documentation for this. @ahmedhussain18 might be able to help you out here. My understanding is that strain can be either linear (elastic) or non-linear (plastic). You can view just the plastic component of strain with **total non-linear strain** or just the elastic component of strain with **total linear strain**. Oy you can view the combined elastic and plastic strain with **total strain**.

> [@potyka\_csaba](#):
>
> 1. Do you have an idea how could I check whether the 0.1 mm fictitious clearance between the physical contacts really tok place? Until now I failed to do this anyhow I tried.

You can do this by plotting displacement in the post processor or by applying a “Results Control” measure in the simulation designer. Below is an example of a definition that measures displacement in the X, Y and Z directions.

 ![](https://www.simscale.com/forum/uploads/default/original/2X/c/c68558582223e25da304addd41067c905bf1ded2.png)

The results can be viewed in the post processor and look like this

 ![](https://www.simscale.com/forum/uploads/default/original/2X/3/3ddbd8a6795276ab17d18a7a15554aea84ac9fa5.png)

---

<div class="post-metadata">

**Author:** ![ahmedhussain18](https://www.simscale.com/forum/user_avatar/www.simscale.com/ahmedhussain18/32/140_2.png) [@ahmedhussain18](https://www.simscale.com/forum/u/ahmedhussain18)\
**Post date:** [June 29, 2016, 12:33pm UTC](https://www.simscale.com/forum/t/2nd-order-elements-and-frictional-contact/29430/10 "2016-06-29T12:33:55Z")

</div>

Well explained @BenLewis! 🙂

@potyka_csaba! Regarding documentation of solution fields we are progressing towards them. As there are many things beforehand to improve which are quite important than solution fields. @BenLewis already explained it pretty well, other then that you can always search on web about these solution fields as they are fairly similar to other simulation softwares.

Best,  
Ahmed

---

<div class="post-metadata">

**Author:** ![rszoeke](https://www.simscale.com/forum/user_avatar/www.simscale.com/rszoeke/32/14_2.png) [@rszoeke](https://www.simscale.com/forum/u/rszoeke)\
**Post date:** [June 29, 2016, 2:28pm UTC](https://www.simscale.com/forum/t/2nd-order-elements-and-frictional-contact/29430/11 "2016-06-29T14:28:31Z")

</div>

Hello @potyka_csaba @BenLewis @ahmedhussain18,  
maybe I can explain the meaning of the most important stress and strain result fields.  
First, lets clear the notation:

u\_{i,j} = \frac{\partial u\_i}{\partial j}

and

u\_{k,i}u\_{k,j} = \sum\_{k=1}^{3} u\_{k,i}u\_{k,j}

* * *

For the **stresses** we have:

- **Cauchy stress tensor** : The most basic and most important stress measure. Directly from the Cauchy postulate:

\vec{T}^{(\vec{n})}= \sigma \vec{n}

- **Principal stresses** :

\begin{aligned}\sigma \_{I}={\frac {I\_{1}}{3}}+{\frac {2}{3}}\left({\sqrt {I\_{1}^{2}-3I\_{2}}}\right)\cos \phi \\\sigma \_{II}={\frac {I\_{1}}{3}}+{\frac {2}{3}}\left({\sqrt {I\_{1}^{2}-3I\_{2}}}\right)\cos \left(\phi -{\frac {2\pi }{3}}\right)\\\sigma \_{III}={\frac {I\_{1}}{3}}+{\frac {2}{3}}\left({\sqrt {I\_{1}^{2}-3I\_{2}}}\right)\cos \left(\phi -{\frac {4\pi }{3}}\right)\end{aligned}

where I\_{1}, I\_{2},I\_{3} are the stress invariants.

- **von Mises stress** : A scalar stress criteria by von Mises

\sigma\_v = \sqrt{\frac{1}{2}[(\sigma\_{I}-\sigma\_{II})^2 + (\sigma\_{II}-\sigma\_{III})^2 +(\sigma\_{III}-\sigma\_{I})^2)]}

- **von Mises stress (signed)** : The signed von Mises stress has the same absolute value as the normal von Mises stress, but it has a sign that is determined by the sign oh the hydrostatic stress to distinguish between compression and tension .

\sigma\_{vs} = sign(tr(\sigma))\sigma\_v

- **Tresca stress** : Scalar stress criteria by Tresca

\sigma\_{tr} = \sigma\_{I}-\sigma\_{III}

* * *

For the **strains** we have:

- **total linear strain** : This is often also referred to as **engineering strain** , it’s a simple linearized strain measure derived from the Cauchy stresses without second order terms

\epsilon\_{ij} = \frac{1}{2} (u\_{i,j}+u\_{j,i})

- **total nonlinear strain** : This is originally called **Green-Lagrange strain**

E\_{ij} = \frac{1}{2} (u\_{i,j}+u\_{j,i}+ u\_{k,i}u\_{k,j})

---

<div class="post-metadata">

**Author:** ![potyka\_csaba](https://www.simscale.com/forum/letter_avatar/potyka_csaba/32/5_5575768a8748004e209b776fc1b2916d.png) [@potyka\_csaba](https://www.simscale.com/forum/u/potyka_csaba)\
**Post date:** [June 29, 2016, 6:17pm UTC](https://www.simscale.com/forum/t/2nd-order-elements-and-frictional-contact/29430/12 "2016-06-29T18:17:30Z")

</div>

Thanks @BenLewis!  
This helped a lot!

P.S.: @ahmedhussain18 Meanwhile I think I found the problem; my contact settings are too “soft” and due to the large penetration I don’t get those results what I would expect. That is why I asked what kind of units are shown in the post processing because I was not able to find out why I see what I see.  
I just try to increase the penalty coefficient to see whether the results will be better.

Cheers,  
Csaba

---

<div class="post-metadata">

**Author:** ![potyka\_csaba](https://www.simscale.com/forum/letter_avatar/potyka_csaba/32/5_5575768a8748004e209b776fc1b2916d.png) [@potyka\_csaba](https://www.simscale.com/forum/u/potyka_csaba)\
**Post date:** [June 29, 2016, 6:22pm UTC](https://www.simscale.com/forum/t/2nd-order-elements-and-frictional-contact/29430/13 "2016-06-29T18:22:55Z")

</div>

Hello @rszoeke!

Thanks a lot for the explanations! (The format of the equations is now perfect!)

Bests,  
Csaba

---

<div class="post-metadata">

**Author:** ![ahmedhussain18](https://www.simscale.com/forum/user_avatar/www.simscale.com/ahmedhussain18/32/140_2.png) [@ahmedhussain18](https://www.simscale.com/forum/u/ahmedhussain18)\
**Post date:** [June 30, 2016, 8:30am UTC](https://www.simscale.com/forum/t/2nd-order-elements-and-frictional-contact/29430/14 "2016-06-30T08:30:16Z")

</div>

@potyka_csaba! Yes, indeed penetration is always a problem. I just did these preliminary simulations. One can for sure do it with higher penalty stiffness which in turn will take more time to converge. But of coarse to get better results, you have to take this thing in consideration 🙂

Best,  
Ahmed

---

<div class="post-metadata">

**Author:** ![potyka\_csaba](https://www.simscale.com/forum/letter_avatar/potyka_csaba/32/5_5575768a8748004e209b776fc1b2916d.png) [@potyka\_csaba](https://www.simscale.com/forum/u/potyka_csaba)\
**Post date:** [July 6, 2016, 8:08pm UTC](https://www.simscale.com/forum/t/2nd-order-elements-and-frictional-contact/29430/15 "2016-07-06T20:08:37Z")

</div>

Hello @ahmedhussain18, @rszoeke and the whole SimScale Stuff (;-))!

Please give me some info about the element formulations in SimScale for Code-Aster advanced static problems!

1. What is the element correspondence (1st order and the 2nd order) between SimScale and Code-Aster?
2. The contact formulation is discrete or continuous corresponding to Code-Aster?
3. Please give me some advice how could I get run the model “2ndelAugmLagfrict” in my project: [https://www.simscale.com/workbench?publiclink=6a77111a-5e14-4abb-b4b1-f27f94976881](https://www.simscale.com/workbench?publiclink=6a77111a-5e14-4abb-b4b1-f27f94976881)  
(NOTE: for 1st order elements it is fine even with friction, but the 2nd order elements seem to be not that well conditioned for the contact algorithm, nevertheless it should work without any problem based on the Code-Aster documentation…)

Your help is extremely priciated 🙂  
Thanks in advance,  
Csaba

---

<div class="post-metadata">

**Author:** ![rszoeke](https://www.simscale.com/forum/user_avatar/www.simscale.com/rszoeke/32/14_2.png) [@rszoeke](https://www.simscale.com/forum/u/rszoeke)\
**Post date:** [July 7, 2016, 7:44am UTC](https://www.simscale.com/forum/t/2nd-order-elements-and-frictional-contact/29430/16 "2016-07-07T07:44:47Z")

</div>

Hello @potyka_csaba,  
let’s first answer the easy questions:

1. The element type depends not on the mesh order, there is an additional setting as a child of the assigned mesh in your simulation that is called **Element Technology**. There you can choose the “finite” element type. For the **3D** elements, you currently have the choice between **standard** (equals _3D_ in Code-Aster) and **reduced integration** (equals _3D\_SI_ in Code\_Aster). There are more to come, especially incompressible elements.

2. We are using only the _continuous_ formulation, since this is the most complete and robust one, especially for friction.  
As a side note, if you have a look at the beginning of the **Solver log** , there you find the complete set of Code\_Aster commands that is used for the run. You can review each setting that you are interested in (if you understand the Code-Aster command file syntax).

3. I did not yet have a look at the project you mentioned, but generally there can arise problems with contact on second order elements. It’s mentioned in the Code-Aster documentation, for example in the document [Note of use of the contact](http://code-aster.org/doc/v12/en/man_u/u2/u2.04.04.pdf):  
`In formulation continues, for meshes of edge curves, the use of elements QUAD8 or TRIA6 can involve violations of the model of contact: this last is checked on average. One then observes clearances slightly positive or slightly negative in the presence of contact, which can disturb the results close to the contact zone or computations in recovery with initial state. For this reason it is advised to use elements HEXA27or PENTA18 (with sides QUAD9) or many linear elements.`  
Currently we don’t have the support for HEXA27 or PENTA18 elements.

I’ll have a look at you sim to see if we can get it to run nevertheless.  
Best,  
Richard

---

<div class="post-metadata">

**Author:** ![ajaybharish](https://www.simscale.com/forum/letter_avatar/ajaybharish/32/5_5575768a8748004e209b776fc1b2916d.png) [@ajaybharish](https://www.simscale.com/forum/u/ajaybharish)\
**Post date:** [August 12, 2016, 1:46pm UTC](https://www.simscale.com/forum/t/2nd-order-elements-and-frictional-contact/29430/17 "2016-08-12T13:46:45Z")

</div>

@rszoeke, @anon18194957 :

**Continuous formulation**

What do you mean by continuous formulation? This is also something that is not discussed in the documentation. From the textbook, types of implementations for contact include:

1. Node-to-node
2. Node-to-segment
3. Integration point-to-segment
4. Segment-to-segment

When you say continuous, do you mean segment-to-segment?

**Penalty vs. Augmented Lagrange**

Additionally, the documentation says that the “Lagrangian” approach is not stable compared to penalty. But the UI calls is “Augmented Lagrange”. So I am a bit confused if the implemented method is “Lagrange multiplier” or “Augmented Lagrange multiplier”.

From what I understand from my own contact implementations is

1. Large penalty factors can lead to ill-conditioning of the stiffness matrix. As penalty parameter tends to infinity, it leads to an exact solution. Else penalty method should have small (though negligible) interpenetration.

2. Lagrange multiplier method is exact but adds more equations. Additionally, it can lead to oscillatory behavior at the transition zone.

3. Augmented Lagrange multiplier method combines the good qualities of both the above worlds. Computationally, it definitely leads to a bigger system of equations. But that is a small price to pay for accuracy & robustness.

So I am wondering why it would be any less stable than the penalty method as mentioned in the documentation?

**Mortar formulation?**

Also what if you have non-matching meshes on the two sides. Is it using a mortar method? If not, how are these handled?

Thanks for the clarifications.

---

<div class="post-metadata">

**Author:** ![rszoeke](https://www.simscale.com/forum/user_avatar/www.simscale.com/rszoeke/32/14_2.png) [@rszoeke](https://www.simscale.com/forum/u/rszoeke)\
**Post date:** [August 16, 2016, 1:23pm UTC](https://www.simscale.com/forum/t/2nd-order-elements-and-frictional-contact/29430/18 "2016-08-16T13:23:17Z")

</div>

Hello @ajaybharish,  
good questions! I’ll try to answer them one-by-one:

> [@ajaybharish](#):
>
> **Continuous formulation**
> 
> What do you mean by continuous formulation?  
> …  
> When you say continuous, do you mean segment-to-segment?

The wording **continuous formulation** is a wording that comes from the underlying tool that we use for the _advanced_ analysis types (_[Code\_Aster](http://code-aster.org)_) and rather a distinction to the other available formulation, the **discrete formulation**. The _discrete_ formulation is called that way, since it uses already discretized fields such as displacement and nodal forces in the contact equations. It’s available with a _node-to-segment_ and a _node-to-segment_ pairing.  
We decided to only include the _continuous formulation_ since it is the more generic one and better usable with friction. The _continuous formulation_ uses a _node-to-segment_ pairing.

> [@ajaybharish](#):
>
> **Penalty vs. Augmented Lagrange**
> 
> Additionally, the documentation says that the “Lagrangian” approach is not stable compared to penalty. But the UI calls is “Augmented Lagrange”. So I am a bit confused if the implemented method is “Lagrange multiplier” or “Augmented Lagrange multiplier”.

The wording in the documentation is indeed not explicit enough. In this case the correct naming is **Stabilized Lagrangian Method** , but it is equivalent to the _Augmented Lagrangian Method_, for details you can have a look at this [phd thesis by Ayaovi Dzifa Kudawoo](https://tel.archives-ouvertes.fr/tel-00773642/document).

> [@ajaybharish](#):
>
> So I am wondering why it would be any less stable than the penalty method as mentioned in the documentation?

This is partly related to the general nature of the Penalty Method and also the current implementation of the Augmented Lagrangian Method.

Generally the source of (almost) all difficulties when dealing with _physical contact_ is the high nonlinearity of the contact conditions, they are not only nonlinear, but non-differentiable and discontinuous. Since the _Penalty Method_ itself smoothens the strong contact assumptions by allowing a certain amount of penetration, reduces the numerical difficulties. Of course, the method itself introduces another source for numerical problems as you stated, but with a reasonable starting value for the penalty factor most contact analyses will at least give an initial result. This can be then used as a starting point to further refine your setup and finally reach converged results.

The _Augmented Lagrangien Method_ can have problems with over-constrained simulation setups, for example when symmetry and frictional contact constrain the same DOF. This might partially be related to the current implementation, but experience has shown that in those cases switching to a penalty contact often solves the problem.

> [@ajaybharish](#):
>
> **Mortar formulation?**  
> Also what if you have non-matching meshes on the two sides. Is it using a mortar method? If not, how are these handled?

I am not sure how far you want me to go with an answer to this one. The contact surfaces are generally never matching. The current implementation does not use a mortar method. You can find all details of its implementation in [this document](http://code-aster.org/doc/v12/fr/man_r/r5/r5.03.52.pdf) of the official Code\_Aster documentation.

As a side note: Recently there was an improved contact method for non-matching meshes implemented into Code-Aster that is going to be integrated into SimScale as soon as it’s stable. Details can be found [in this paper](https://hal-univ-tlse3.archives-ouvertes.fr/hal-01143753/document).

If you have any additional questions, I’m happy to help.  
Best,  
Richard
