Error and definition lost when import "inp" file that exported by PrePoMax

I’m using PrePoMax v2.3.0, when I re-import the “inp” file that exported by the same version PrePoMax, an error window popup, and the " Initial Conditons" and " Centrifugal Load" are lost.

This is the error window.

This is the Setup when I export the “inp” file. You can see there is an Initial Conditons setup named “Temperature-Temp” and “Centrifugal Load-Rotation” under the Loads of Step-Static.

This is the setup when I re-import the “inp” file. You can see that the Initial Conditons “Temperature-Temp” and Loads “Centrifugal Load-Rotation” are lost.

The files I used are list below.
.pmx file. Import-Test.pmx - Google Drive
.inp file. Import-Test.inp - Google Drive
.stp file. import.stp - Google Drive

Is this a bug? or did I missed something?

If I remember correctly, the importer is not as up to date as the exporter. Also, there are certain keywords that do not have an easy way to be implemented.

Currently I am using a fortran program to generate inp files according to the format exported by ProPoMax. Sometimes I need to import to ProPoMax to see the setup. So will this be fixed in the furture? @Matej

The .inp file support is added to export the model to the CalculiX solver. The importer is not needed for this process, so it is not developed in sync. There is also a problem that some features in PrePoMax, as Surface traction, are not supported in the .inp files and, as such, cannot be recreated.

So the .inp importer is developed based on the users’ needs or requests only.

I got it. Thank you!

Need to add support for CENTRIF

Tried to add support for CENTRIF. Questions:

1.Are the N1,N2,N3 and X,Y,Z right?
2. Why need SetEquationFromValue? Not like:

cenLoad.Z=double.Parse(recordDL[8]);
  1. cenLoad.RotationalSpeed2 read only?
                    else if (loadingType.ToUpper() == "CENTRIF")
                    {
                        //Following line for centrifugal loading:

                        //Element number or element set label.
                        //CENTRIF
                        //rotational speed square($ \omega^2$)
                        //Coordinate 1 of a point on the rotation axis
                        //Coordinate 2 of a point on the rotation axis
                        //Coordinate 3 of a point on the rotation axis
                        //Component 1 of the normalized direction of the rotation axis
                        //Component 2 of the normalized direction of the rotation axis
                        //Component 3 of the normalized direction of the rotation axis

                        //Element_Set - Body, CENTRIF, 98596, 0, 0, 0, 1, 0, 0
                        //MessageBoxes.ShowInfo(lines[i]);
                        name = step.Loads.GetNextNumberedKey("Centrif");
                        //
                        CentrifLoad cenLoad = new CentrifLoad(name, regionName, RegionTypeEnum.ElementSetName,
                                                            false, false, false, 0);
                        //cenLoad.RotationalSpeed2.SetEquationFromValue(double.Parse(recordDL[3]));
                        cenLoad.N1.SetEquationFromValue(double.Parse(recordDL[3]));
                        cenLoad.N2.SetEquationFromValue(double.Parse(recordDL[4]));
                        cenLoad.N3.SetEquationFromValue(double.Parse(recordDL[5]));
                        cenLoad.X.SetEquationFromValue(double.Parse(recordDL[6]));
                        cenLoad.Y.SetEquationFromValue(double.Parse(recordDL[7]));
                        cenLoad.Z.SetEquationFromValue(double.Parse(recordDL[8]));
                        //MessageBoxes.ShowInfo("[bj] recordDL[8] =" + recordDL[8]);
                        //cenLoad.Z=double.Parse(recordDL[8]);
                        //MessageBoxes.ShowInfo("[bj] cenLoad.Z.SetEquationFromValue =" + cenLoad.Z.ToString());
                        //
                        step.AddLoad(cenLoad);

                    }

I do not understand?

The cenLoad.Z is not a double. It is a custom type that can contain an equation given by the user. So it needs to be defined by SetEquationFromValue.

This is rotational speed squared computed from RotationalSpeed.

N1.SetEquationFromValue(double.Parse(recordDL[3]));

N1 value from recordDL[3]? Now I think X value should be from [3].
This looks good. 98596 = 314 X 314

Double click on the load got this:

*Dload, op=New
** Name: Centrifugal_Load-Rotate

Is this ** Name Calculix’s way or PPM’s way?
Line starts with ** is filtered out. How do I get the name?

Some CalciuliX keywords do not support/have names.

The error you get might be due to the small/large case letters.

1 Like

Probably no need to change the name to all captial.

Since line starts with ** is filtered out, need to find a way to read **name before the filter. This is not critical, another name is given by the code.