And finally the RAM memory for the Sparse solver: the key here is that the solution runs fully in memory (in-core solution), this is critical. If the solution is out-of-core, then you need to increase RAM memory using NXNA_MEMORY environment variable, OK?.

Secondly, you are calculating friction which is probably done with contact elements. Contact is IMHO an iterative process so that using more processors might not help and Multi-Core-CPU will not be used 100%. In an example that I created a while ago to explain the usage of SMEM, I did some contact calculation. In the first figure you can see the calculation without SMEM, as you can see, the CPU is often waiting for the memory which is slow because it is swapped to the harddisk:

In the second figure, you can see the CPU doesn't have to wait because all the data is in the RAM. You can see a strait line at 25% which means, one core (out of 4) is working at full load. But as it is an itearative process only sometimes a second or thrid CPU ist helping.

So if your CPU history looks like this, everything is fine. If you do calculations without contact you probably have 100% usage all the time when using SMEM.

Re: Memory settings for Advanced Non Linear Static Analysis (SOL601)

Thank you JimB for the Info, you are right. ADINA is mature enough to decide itself how much memory it needs and uses. The things I stated refere to SOL 101 using contacct elements and to all the other solution that use the Nastran Solver.

The process tree is still interesting because the Analysis.exe still takes the MEM assigned as the following three pictures show.

process tree with no extra commands:

the process tree using 5000MB for MEM

and the process tree using 5000MB MEM and 3000MB SMEM

It would be interessting if the analisys.exe is able to give the memory to processes it calls or not. Since MEM and especially SMEM are so helpful for solutions that use the NASTRAN solver, I have MEM=8000MB and SMEM=6500MB right in my nast9.rcf. If the analisys would no be able to pass the memory it would mean that this memory is blocked and not availible to the adina solver. If not enough physical memory is availible this could then actually slow down adina solution.

Re: Memory settings for Advanced Non Linear Static Analysis (SOL601)

You can leave these settings in the rcf file for nastran superelement solution sequences. If you run an advanced nonlinear solution, simply specify small memory values for Nastran on the Solver Parameters dialog.

The only parameter you can really control for Adina is memory allocation. If it has enough memory to solve in core, it does minimal swapping and does not need much scratch IO. The .f06 will tell you how much memory is needed to solve in core.

In an Advanced Nonlinear run, Nastran starts up, reads the input deck and writes data to be transferred to Adina in an .op2 file. When Adina is done, Nastran reads data from Adina temporary results files and writes the final .op2 file. Neither of these processes requires much memory. If you are running on a 32 GB machine, you may be able to specify mem=14GB on the Nastran command line. Nastran will start up, allocate it's 14GB, use a small portion of that to do the initial data transfer, then spawn an Adina process, which will also allocate 14GB. You've now got 28GB of your 32 GB in use, but Adina only has access to 14GB.

Rather than using the mem keyword only (where Nastran and Adina both allocate the same amount), you can adjust the split using NXNA_MEMORY. In the scenario above, you should set NXNA_MEMORY=26624 and then specify mem=1GB on the Nastran command line. This gives 1GB of memory to Nastran, which is typically more than enough to do the file reads/writes, and allows the Adina process to allocate 26 GB.

Also note that the Adina scratch files do not get written to sdir. If you want them to be on the SSD, you need to launch the solve from a folder on the SSD.

Final Note: the memory allocation mentioned above is changing in NX Nastran version 12. The Nastran core memory is being split into a static portion (a minimal amount required to hold the database and other essential data) and a dynamic portion. The dynamic portion will be released prior to an ISHELL process being spawned. With this change, you will be able to specify mem=26GB directly on the command line and the Nastran process will release a majority of this so Adina will be able to allocate it.

The system has 64 GB of RAM, and I think that it said that it needed like maybe 14-16 GB for an in-core solution for the entire run.

The SSD that I have installed on the system is an Intel 750 series 400 GB PCI Express Gen 3.0 x4 (NVMe 1.0) half height, half-length add-on card.

So beyond that, I can't think of any more ways to speed up the run, hence why I was looking for ideas to see if there was a way to speed up the run any more.

Looking at the nxadina.exe process in Windows Task Manager (yes, I realise that process explorer is actually better for it, but this is "simple" enough to give me an idea) - after each equilibrium iteration, it reads a little shy of 2 GB of data in (takes about 20 seconds to do so) in between each equilibrium iteration.

I'm not sure where it is reading the data to/from. I've set scr=no, but I will have to do more testing with the various settings to see if it even makes much of a (or any) difference (at all).

Thanks.

(P.S. The Windows OS is on its own SATA 6 Gbps SSD, and the windows page file is also on its own, separate SATA 6 Gbps SSD as well.)

Also if I recall correctly (I'm not in front of that system right now), it says that it passed 29 GB of RAM over to ADINA, and it only uses (also IIRC, according to the .f06) upto 16 GB for the run, so to that end, it seems like that the ADINA has plenty of RAM for the solution.

I just want to make sure that I am doing everything I possibly can, given the hardware that I've got, to make this run as quickly as possible.