Running on AIX

For developers writing C++, Fortran, Java, code who have questions or comments to make.

Moderators: silvia, selimgunay, Moderators

Post Reply
Liam
Posts: 24
Joined: Wed Mar 02, 2005 8:25 am
Location: University of Auckland

Running on AIX

Post by Liam »

Hi

I am looking to run Opensees on a high performance computer that runs on Aix 5.3. I have been in contact with the person who runs the computer, and was wondering if it was possible to compile OpenSees for this operating system. The compiler that is available is xlc.

Also what are the parallel computing possibilities for OpenSees

Thanks
Liam
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Post by fmk »

yes it has been compiled with xlc .. just not on an aix platform .. search the
MAKES directory for a Makefile.def that uses xlc .. copy this to the OpenSees
directory and then some of the path's need to be set .. you may need to
remove/include some new libraries.
Liam
Posts: 24
Joined: Wed Mar 02, 2005 8:25 am
Location: University of Auckland

Errors in compilation

Post by Liam »

Hi

I get the following errors when trying to compile on aix system using xlc

"TclDatabaseCommands.cpp", line 90.39: 1540-0256 (S) A parameter of type
"extern "C" int (*)(void *, Tcl_Interp *, int, const char **)" cannot be
initialized with an expression of type "int (ClientData, Tcl_Interp *,
int, char **)".
"TclDatabaseCommands.cpp", line 90.39: 1540-1205 (I) The error occurred
while converting to parameter 3 of "Tcl_CreateCommand(Tcl_Interp *,
const char *, extern "C" int (*)(void *, Tcl_Interp *, int, const char
**), ClientData, extern "C" void (*)(void *))".
"TclDatabaseCommands.cpp", line 92.42: 1540-0256 (S) A parameter of type
"extern "C" int (*)(void *, Tcl_Interp *, int, const char **)" cannot be
initialized with an expression of type "int (ClientData, Tcl_Interp *,
int, char **)".
"TclDatabaseCommands.cpp", line 92.42: 1540-1205 (I) The error occurred
while converting to parameter 3 of "Tcl_CreateCommand(Tcl_Interp *,
const char *, extern "C" int (*)(void *, Tcl_Interp *, int, const char
**), ClientData, extern "C" void (*)(void *))".
make[1]: *** [TclDatabaseCommands.o] Error 1
make[1]: Leaving directory `/people/lim/OpenSees/SRC/database'
make: *** [all] Error 2
make: The error code from the last command is 2.

Could you give me any insight as to where these errors are coming from

Thanks
Liam
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Post by fmk »

the probelm is tcl/tk .. versions earlier than 8.4 use char *, 8.4 and later use const char * .. the trick is to put -D_TCL84 in the C++FLAGS in your Makefile.def
Liam
Posts: 24
Joined: Wed Mar 02, 2005 8:25 am
Location: University of Auckland

Compiling on aix

Post by Liam »

Hi Frank

We were just building the libraries before and the fix you gave allows these to be built ok. But when we try to build opensees we get the following error

[lim@hpc]> /usr/local/bin/make OpenSees
Building OpenSees Program ..
make[1]: Entering directory `/people/lim/OpenSees/SRC/tcl'
make[1]: Nothing to be done for `tcl'.
make[1]: Leaving directory `/people/lim/OpenSees/SRC/tcl'
make[1]: Entering directory `/people/lim/OpenSees/SRC/modelbuilder/tcl'
make[2]: Entering directory `/people/lim/OpenSees/SRC/tcl'
make[2]: Nothing to be done for `tcl'.
make[2]: Leaving directory `/people/lim/OpenSees/SRC/tcl'
ld: 0711-317 ERROR: Undefined symbol: beam2d03::getDamp()
ld: 0711-317 ERROR: Undefined symbol: beam2d03::getMass()
ld: 0711-317 ERROR: Undefined symbol: .hard_1__
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more
information.
make[1]: *** [tcl] Error 8
make[1]: Leaving directory `/people/lim/OpenSees/SRC/modelbuilder/tcl'
make: *** [tcl] Error 2

Looking at the code in beam2d03 , i think the beam2d03.h has references
to getDamp and getMass.
This is as far as we can work out

Any suggestions for this
thanks again
liam
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Post by fmk »

i have checked in a fix for the beam2d03 into the cvs repository .. as for trhe hard that's a compiler thing .. you can either remove the material (there is another Hardening material that is used anyway; this one is not documented!) .. to remove it make the invokeSubroutine method
in /OpenSees/SRC/material/uniaxial/FedeasMaterial.cpp look like the rest of those fedeas materials.

#ifdef _WIN32
hard_1__(data, hstv, &hstv[numHstv], &epsilonP, &sigmaP, &dEpsilon,
&sigma, &tangent, &ist);
#else
opserr << "FedeasMaterial::invokeSubroutine -- Bond1 subroutine not yet linked\n";
#endif

if you want to keep it fo to the fedeas subdirectory and look at the Hard1.o file to see what name it gave to the fortran procedure .. then go back to above file and make the name the same .. it's either the number of underscores or make it all caps depending on the fortran compiler.
Liam
Posts: 24
Joined: Wed Mar 02, 2005 8:25 am
Location: University of Auckland

Post by Liam »

Hi

The version of OpenSees has been compiled ok for version 1.6.2.c. Thanks for your help.

I have another question. I have run a model using an old version of OpenSees on Windows (version 1.6.0 that was compiled by boris) and it runs ok. If i run the same model on the version i have compiled for aix the following error is given:

Can't expand MemType 0: jcol 2519
WARNING SuperLU::solve(void)- Error 6.47212e+07 returned in factorization dgstrf()
WARNING KrylovNewton::solveCurrentStep() -the LinearSysOfEqn failed in solve()
StaticAnalysis::analyze() - the Algorithm failed at iteration: 0 with domain at load factor 1
OpenSees > analyze failed, returned: -3 error flag

I have no idea why this is occuring and was wondering if you could give me some help with this

Liam
Post Reply