# Dynamic simulation of the PCB

**URL:** <https://prepomax.discourse.group/t/dynamic-simulation-of-the-pcb/1945>\
**Category:** General Questions\
**Created:** [August 15, 2024, 7:59pm UTC](https://prepomax.discourse.group/t/dynamic-simulation-of-the-pcb/1945 "2024-08-15T19:59:12Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![cardjunk](https://avatars.discourse-cdn.com/v4/letter/c/958977/32.png) [@cardjunk](https://prepomax.discourse.group/u/cardjunk)\
**Post date:** [August 15, 2024, 7:59pm UTC](https://prepomax.discourse.group/t/dynamic-simulation-of-the-pcb/1945/1 "2024-08-15T19:59:12Z")

</div>

I am trying to make some simulation for the PCB, I need to check it for certain sinusoidal excitation and random vibration with given PSD.

I found out that there is a option for describe excitation with tabular, I was trying to use it somehow.  
Is this even possible? Thank you for help

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [August 15, 2024, 8:09pm UTC](https://prepomax.discourse.group/t/dynamic-simulation-of-the-pcb/1945/2 "2024-08-15T20:09:07Z")

</div>

You can use the steady-state dynamics procedure to simulate harmonic (sinusoidal) excitation and get the results in the frequency domain. The amplitude feature can be used to specify the load as a function of frequency.

If you need to define a different form of excitation than the harmonic one, you can use the modal dynamics procedure. The results are in the time domain while amplitudes allow time variation of loads. Of course, this procedure might be used to apply a random excitation signal equivalent to PSD.

---

<div class="post-metadata">

**Author:** ![cardjunk](https://avatars.discourse-cdn.com/v4/letter/c/958977/32.png) [@cardjunk](https://prepomax.discourse.group/u/cardjunk)\
**Post date:** [August 17, 2024, 7:50am UTC](https://prepomax.discourse.group/t/dynamic-simulation-of-the-pcb/1945/3 "2024-08-17T07:50:45Z")

</div>

I will try to do this, lets see if i will succeed. thank you 🙂

---

<div class="post-metadata">

**Author:** ![cardjunk](https://avatars.discourse-cdn.com/v4/letter/c/958977/32.png) [@cardjunk](https://prepomax.discourse.group/u/cardjunk)\
**Post date:** [August 19, 2024, 7:26am UTC](https://prepomax.discourse.group/t/dynamic-simulation-of-the-pcb/1945/4 "2024-08-19T07:26:03Z")

</div>

okey, so could someone explain to me, what really steady state dynamic procedure with harmonic turned on really does?

I have following set up:

 ![image](https://global.discourse-cdn.com/free1/uploads/prepomax/original/2X/5/5526b57f52a5abacbc715c19f5f7a84062694e00.jpeg)

I am wondering how this is summing up, what actually the loads was applied

I was trying to achieve this type of load

| Hz | g |
| --- | --- |
| 5 | 0.5 |
| 20 | 0.8 |
| 35 | 0.8 |
| 35 | 0.6 |
| 75 | 0.6 |
| 85 | 0.9 |
| 100 | 0.9 |

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [August 19, 2024, 7:35am UTC](https://prepomax.discourse.group/t/dynamic-simulation-of-the-pcb/1945/5 "2024-08-19T07:35:04Z")

</div>

Harmonic should stay on in most cases to use the usual form of this analysis procedure. Disabling it means that you specify the load in time domain but it’s counterintuitive for this type of analysis.

What you have now is harmonic (sinusoidal) load but with value depending on the frequency - amplitude at a given point times load magnitude (you have to select the amplitude other than Default there though).

---

<div class="post-metadata">

**Author:** ![cardjunk](https://avatars.discourse-cdn.com/v4/letter/c/958977/32.png) [@cardjunk](https://prepomax.discourse.group/u/cardjunk)\
**Post date:** [August 19, 2024, 8:14am UTC](https://prepomax.discourse.group/t/dynamic-simulation-of-the-pcb/1945/6 "2024-08-19T08:14:17Z")

</div>

damn, of course, so with edited load (choosen correct amplitude) I think I have valid setup.  
Time to try random now 🙂

---

<div class="post-metadata">

**Author:** ![cardjunk](https://avatars.discourse-cdn.com/v4/letter/c/958977/32.png) [@cardjunk](https://prepomax.discourse.group/u/cardjunk)\
**Post date:** [August 19, 2024, 10:54am UTC](https://prepomax.discourse.group/t/dynamic-simulation-of-the-pcb/1945/7 "2024-08-19T10:54:40Z")

</div>

> If you need to define a different form of excitation than the harmonic one, you can use the modal dynamics procedure.

In modal dynamic procedure I am not able to create any BCs. I know those are not needed for finding natural freqs but for random vibr it is needed, should I use other step instead?

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [August 19, 2024, 11:07am UTC](https://prepomax.discourse.group/t/dynamic-simulation-of-the-pcb/1945/8 "2024-08-19T11:07:23Z")

</div>

CalculiX requires that boundary conditions in modal dynamics step remain the same as the ones defined in the preceding frequency step: [Small typos in v1.4.0 - #2 by Matej](https://prepomax.discourse.group/t/small-typos-in-v1-4-0/929/2)

If you want to prescribe motion instead of force load in that step, you should use \*BASE MOTION - it has to be added via keyword editor: [Base motion for dynamic analyses](https://prepomax.discourse.group/t/base-motion-for-dynamic-analyses/1062)

---

<div class="post-metadata">

**Author:** ![cardjunk](https://avatars.discourse-cdn.com/v4/letter/c/958977/32.png) [@cardjunk](https://prepomax.discourse.group/u/cardjunk)\
**Post date:** [August 19, 2024, 11:36am UTC](https://prepomax.discourse.group/t/dynamic-simulation-of-the-pcb/1945/9 "2024-08-19T11:36:34Z")

</div>

I would like to use acceleration load. Is base motion will be any diffrence than grav load?  
I was trying to add keyword but not sure where should I add this, in loads, in BCs? Or maybe existing load edit with formula you’ve provided

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [August 19, 2024, 11:43am UTC](https://prepomax.discourse.group/t/dynamic-simulation-of-the-pcb/1945/10 "2024-08-19T11:43:42Z")

</div>

Base motion is a special form of a boundary condition meant for linear dynamics procedures. It’s like physically shaking the part (e.g. on a vibration shaker) so it should be appropriate here. And it’s also available in the acceleration form.

You can’t edit existing keywords in the Keyword Editor so just add a new one somewhere between `*MODAL DYNAMIC` and `*END STEP`.

---

<div class="post-metadata">

**Author:** ![manuelf](https://avatars.discourse-cdn.com/v4/letter/m/e99b99/32.png) [@manuelf](https://prepomax.discourse.group/u/manuelf)\
**Post date:** [August 20, 2024, 11:32am UTC](https://prepomax.discourse.group/t/dynamic-simulation-of-the-pcb/1945/11 "2024-08-20T11:32:54Z")

</div>

Hello it’s possible sintetize the PSD into a time domain and Next use this data to feed the table? It’s knowed there would be hundred of thousand points, prepomax could work with this?

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [August 20, 2024, 11:34am UTC](https://prepomax.discourse.group/t/dynamic-simulation-of-the-pcb/1945/12 "2024-08-20T11:34:18Z")

</div>

We’ve been talking about it with Hubert. There are some Matlab codes that could do the job and it might be interesting to convert them to Scilab. Then one could try using that as an amplitude. It should work fine. But the solver increments would have to be really dense.

---

<div class="post-metadata">

**Author:** ![Rishabh](https://avatars.discourse-cdn.com/v4/letter/r/ea5d25/32.png) [@Rishabh](https://prepomax.discourse.group/u/Rishabh)\
**Post date:** [September 18, 2024, 8:35am UTC](https://prepomax.discourse.group/t/dynamic-simulation-of-the-pcb/1945/13 "2024-09-18T08:35:28Z")

</div>

I also have the similar model where I have a pcb and I am using frequency vs PSD values as amplitude using gravity loads.

Unfortunately I am getting an error and I dont know the reason.

This is the model

> **[Random\_vibration.pmx](https://wetransfer.com/downloads/89d8d114e63a3da0b2c3015851d2337220240918082712/cd32c7)**
>
> 1 file sent via WeTransfer, the simplest way to send your files around the world

can you please help me.

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [September 18, 2024, 8:47am UTC](https://prepomax.discourse.group/t/dynamic-simulation-of-the-pcb/1945/14 "2024-09-18T08:47:12Z")

</div>

You need a Frequency step with Storage=Yes before the Steady State Dynamics one.

[Random\_vibration\_2.pmx](https://prepomax.discourse.group/uploads/short-url/1gVFqi5g8LMq8Iy7StXC6H6kMB1.pmx) (5.3 MB)

---

<div class="post-metadata">

**Author:** ![Rishabh](https://avatars.discourse-cdn.com/v4/letter/r/ea5d25/32.png) [@Rishabh](https://prepomax.discourse.group/u/Rishabh)\
**Post date:** [September 18, 2024, 8:59am UTC](https://prepomax.discourse.group/t/dynamic-simulation-of-the-pcb/1945/15 "2024-09-18T08:59:15Z")

</div>

oh thank you. It worked

I also have another confusion. In gravity amplitude we can define Hz vs mm/s^2 but my psd curve is in following format  
 ![image](https://global.discourse-cdn.com/free1/uploads/prepomax/original/2X/2/25b3f68d96bc38f04b3feda0d22511edd2aca044.png)

Then how can I covert my values ?

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [September 18, 2024, 9:38am UTC](https://prepomax.discourse.group/t/dynamic-simulation-of-the-pcb/1945/16 "2024-09-18T09:38:52Z")

</div>

The steady state dynamics procedure assumes harmonic (sinusoidal) excitation. If you need a different form of excitation and transient, not steady state vibrations, you should use the modal dynamics procedure. This can be equivalent to random response analysis. But then you have to convert the PSD to time domain using some script in Matlab or SciLab, for instance.

---

<div class="post-metadata">

**Author:** ![Rishabh](https://avatars.discourse-cdn.com/v4/letter/r/ea5d25/32.png) [@Rishabh](https://prepomax.discourse.group/u/Rishabh)\
**Post date:** [September 18, 2024, 9:50am UTC](https://prepomax.discourse.group/t/dynamic-simulation-of-the-pcb/1945/17 "2024-09-18T09:50:23Z")

</div>

Thank you.  
Yes I understood this from your previous comments. Are there any websites our literatures that provide the imformation about how this code should look like ?

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [September 18, 2024, 9:59am UTC](https://prepomax.discourse.group/t/dynamic-simulation-of-the-pcb/1945/18 "2024-09-18T09:59:20Z")

</div>

You can find some examples of Matlab codes for that. I’ve tried converting them to Scilab but it doesn’t work for now.

[https://www.mathworks.com/matlabcentral/answers/1754630-psd-curve-into-time-series-data](https://www.mathworks.com/matlabcentral/answers/1754630-psd-curve-into-time-series-data)  
[https://www.mathworks.com/matlabcentral/answers/1961044-creating-a-time-series-signal-from-a-known-psd](https://www.mathworks.com/matlabcentral/answers/1961044-creating-a-time-series-signal-from-a-known-psd)  
[https://ch.mathworks.com/matlabcentral/answers/2111171-generate-a-time-series-from-power-spectral-density?s\_tid=prof\_contriblnk](https://ch.mathworks.com/matlabcentral/answers/2111171-generate-a-time-series-from-power-spectral-density?s_tid=prof_contriblnk)

---

<div class="post-metadata">

**Author:** ![Rishabh](https://avatars.discourse-cdn.com/v4/letter/r/ea5d25/32.png) [@Rishabh](https://prepomax.discourse.group/u/Rishabh)\
**Post date:** [September 18, 2024, 11:05am UTC](https://prepomax.discourse.group/t/dynamic-simulation-of-the-pcb/1945/19 "2024-09-18T11:05:17Z")

</div>

Sure I will take a look at them  
Thank you

---

<div class="post-metadata">

**Author:** ![Rishabh](https://avatars.discourse-cdn.com/v4/letter/r/ea5d25/32.png) [@Rishabh](https://prepomax.discourse.group/u/Rishabh)\
**Post date:** [September 18, 2024, 1:23pm UTC](https://prepomax.discourse.group/t/dynamic-simulation-of-the-pcb/1945/20 "2024-09-18T13:23:26Z")

</div>

I also found this website  
[Random RMS Calculator (crystalinstruments.com)](https://www.crystalinstruments.com/random-rms-calculator)

Upon entering my PSD vs Hz data it created G^2 values. Can I take square root of it and use it as the amplitude ?

 ![image](https://global.discourse-cdn.com/free1/uploads/prepomax/original/2X/a/a37d2462a2daa0204268a1971f80da018726a10c.png)
