320 likes | 339 Vues
Learn how to log in to the ETS Portal and GForge system, access projects, request membership, and use the repository effectively. Find essential information and guidelines here.
E N D
Connect to http://portal.efda-itm.eu/ Login Using the Portal & GForge ETS: Status and Standards
Login with your Gateway username and password Using the Portal & GForge ETS: Status and Standards
Select the GForge tab Using the Portal & GForge ETS: Status and Standards
Select the Projects tab Using the Portal & GForge ETS: Status and Standards
Select the ETS Using the Portal & GForge ETS: Status and Standards
Select “Request to join project” Wait … (your project leader has to some work) Using the Portal & GForge ETS: Status and Standards
Once the project leader has done his/her work, then … svn checkout --username developernamehttp://gforge.efda-itm.eu/svn/ets SVN structure trunk RW IMP3 Leader RO T1, T2?, some PLs, TFL branches Shared RW area (create a directory for yourself if necessary tags RW IMP3 Leader + TFL Using the Portal & GForge ETS: Status and Standards
The version in the repository is the definitive version Any changes/additions should be made to this version The repository can be found at http://gforge.efda-itm.eu/svn/ets Anybody needing access should use gforge to join the ETS project or contact me (David.Coster@ipp.mpg.de) Features Uses CPOs Not yet in Kepler But we are working on that Uses “itm_types” and “itm_constants” Runs and produces the same answer on Gateway (PGI, g95, gfortran) JET (PGI) Garching (Lahey Fujitsu, Intel (32&64), NAG) Useful for finding bugs and non-standard Fortran Status of the ETS ETS: Status and Standards
*** This is still very preliminary *** To check the code out from SVN (trunk level): svn checkout http://gforge.efda-itm.eu/svn/ets/trunk ETS Then move to the ETS sub-directory of the ETS directory cd ETS/ETS The Makefile uses the SYS variable which defaults to "GW". It can be changed by doing, for example echo "SYS=linux.Fujitsu" > obj/SYS which is appropriate to use the Lahey-Fujitsu compiler on the Garching linux computers. (Replace "linux.Fujitsu" by "JET" to use the Portland Group compiler on the JACs at JET.) An alternative is do make SYS=gfortran to use, for example, the gfortran compiler. *NEW* (2009-03-20) To use the UAL on the Gateway: echo "SYS=GW_UAL" > obj/SYS ETS README ETS: Status and Standards
To check the code out from SVN (trunk level): svn checkout http://gforge.efda-itm.eu/svn/ets/trunk ETS Then move to the ETS sub-directory of the ETS directory cd ETS/ETS The Makefile uses the SYS variable which defaults to "GW". It can be changed by doing, for example echo "SYS=linux.Fujitsu" > obj/SYS which is appropriate to use the Lahey-Fujitsu compiler on the Garching linux computers. (Replace "linux.Fujitsu" by "JET" to use the Portland Group compiler on the JACs at JET.) An alternative is do make SYS=gfortran to use, for example, the gfortran compiler. *NEW* (2009-03-20) To use the UAL on the Gateway: echo "SYS=GW_UAL" > obj/SYS ETS README ETS: Status and Standards
The actual compilation and running of the test programs is done by: make depend make The output from the ETS code is in data/OUTPUT/ The default case uses solver 3. To check the other solvers: ./TEST.1/run ./TEST.2/run ./TEST.3/run ./TEST.4/run ./TEST.6/run each of which should bring up a ghostview displaying the comparison with the analytic results. ETS README ETS: Status and Standards
SYS=GW default system CPP=cpp we use CPP for .F and .F90 files -include obj/SYS include if available to override default OBJECTCODE=obj/${SYS} set where binaries will be stored DOXYGEN=bin/linux/doxygen set we will find doxygen include config/${SYS} load the system specific parameters include obj/compile define how we compile code Set the search path for the Makefile rules VPATH = src/solvers src/ets src/convergence src/types src/analytics src/test VPATH += src/xmllib src/itm_types src/itm_constants VPATH += src/bdseq src/helena2 src/neo UAL is set to yes if we want to compile using the UAL, otherwise we load our own snapshot of the schemas ifeq ($(UAL),yes) else VPATH += src/schemas LIBSCHEMAS = ${OBJECTCODE}/libschemas.a endif ETS Makefile ETS: Status and Standards
This is the list of .o files that contain main programs and should not be stored in libraries EXCLUDELIST = ${OBJECTCODE}/solver_test.o ${OBJECTCODE}/eq_test.o For each directory we create a variable that contains the .o files created from the source in that directory ANALYTICS_O = ${filter-out ${EXCLUDELIST},${addsuffix .o,${addprefix ${OBJECTCODE}/,${filter-out *, ${basename ${notdir ${shell echo src/analytics/*.[fF] src/analytics/*.[fF]90}}}}}}} CONVERGENCE_O = ${filter-out ${EXCLUDELIST},${addsuffix .o,${addprefix ${OBJECTCODE}/,${filter-out *, ${basename ${notdir ${shell echo src/convergence/*.[fF] src/convergence/*.[fF]90}}}}}}} ETS_O = ${filter-out ${EXCLUDELIST},${addsuffix .o,${addprefix ${OBJECTCODE}/,${filter-out *, ${basename ${notdir ${shell echo src/ets/*.[fF] src/ets/*.[fF]90}}}}}}} SOLVER_O = ${filter-out ${EXCLUDELIST},${addsuffix .o,${addprefix ${OBJECTCODE}/,${filter-out *, ${basename ${notdir ${shell echo src/solvers/*.[fF] src/solvers/*.[fF]90}}}}}}} TEST_O = ${filter-out ${EXCLUDELIST},${addsuffix .o,${addprefix ${OBJECTCODE}/,${filter-out *, ${basename ${notdir ${shell echo src/test/*.[fF] src/test/*.[fF]90}}}}}}} ETS Makefile ETS: Status and Standards
TYPES_O = ${filter-out ${EXCLUDELIST},${addsuffix .o,${addprefix ${OBJECTCODE}/,${filter-out *, ${basename ${notdir ${shell echo src/types/*.[fF] src/types/*.[fF]90}}}}}}} SCHEMAS_O = ${filter-out ${EXCLUDELIST},${addsuffix .o,${addprefix ${OBJECTCODE}/,${filter-out *, ${basename ${notdir ${shell echo src/schemas/*.[fF] src/schemas/*.[fF]90}}}}}}} XMLLIB_O = ${filter-out ${EXCLUDELIST},${addsuffix .o,${addprefix ${OBJECTCODE}/,${filter-out *, ${basename ${notdir ${shell echo src/xmllib/*.[fF] src/xmllib/*.[fF]90}}}}}}} ITM_TYPES_O = ${filter-out ${EXCLUDELIST},${addsuffix .o,${addprefix ${OBJECTCODE}/,${filter-out *, ${basename ${notdir ${shell echo src/itm_types/*.[fF] src/itm_types/*.[fF]90}}}}}}} ITM_CONSTANTS_O = ${filter-out ${EXCLUDELIST},${addsuffix .o,${addprefix ${OBJECTCODE}/,${filter-out *, ${basename ${notdir ${shell echo src/itm_constants/*.[fF] src/itm_constants/*.[fF]90}}}}}}} BDSEQ_O = ${filter-out ${EXCLUDELIST},${addsuffix .o,${addprefix ${OBJECTCODE}/,${filter-out *, ${basename ${notdir ${shell echo src/bdseq/*.[fF] src/bdseq/*.[fF]90}}}}}}} HELENA2_O = ${filter-out ${EXCLUDELIST},${addsuffix .o,${addprefix ${OBJECTCODE}/,${filter-out *, ${basename ${notdir ${shell echo src/helena2/*.[fF] src/helena2/*.[fF]90}}}}}}} NEO_O = ${filter-out ${EXCLUDELIST},${addsuffix .o,${addprefix ${OBJECTCODE}/,${filter-out *, ${basename ${notdir ${shell echo src/neo/*.[fF] src/neo/*.[fF]90}}}}}}} ETS Makefile ETS: Status and Standards
We will need this later ADD_O = ${TEST_O} Define what we want the various libraries to contain LIB_ITM_O = ${ITM_TYPES_O} ${ITM_CONSTANTS_O} ${XMLLIB_O} LIB_SCHEMAS_O = ${SCHEMAS_O} LIB_ETS_O = ${TYPES_O} ${SOLVER_O} ${ETS_O} LIB_ANALYTICS_O = ${ANALYTICS_O} LIB_CONVERGENCE_O = ${CONVERGENCE_O} LIB_BDSEQ_O = ${BDSEQ_O} LIB_HELENA2_O = ${HELENA2_O} LIB_NEO_O = ${NEO_O} ETS Makefile ETS: Status and Standards
Currently we are using a performance monitoring library This is enabled if GOT_PERFLIB is set to “yes” In the absence of this library, we compile and include some dummy routines ifeq (${GOT_PERFLIB}, 'yes') perflib = -L${OBJECTCODE} -lperf PERF_O = else VPATH+=src/perf PERF_O = ${filter-out ${EXCLUDELIST},${patsubst %.f90,${OBJECTCODE}/%.o,${shell echo src/perf/*.f90 | sed 's:src/[^/]*/::g'}}} ADD_O += ${PERF_O} endif ETS Makefile ETS: Status and Standards
Run the test code (solver_test). Because this is a Makefile, it will also make sure that the executable is up-to-date. The results are also compared to a saved version of the results. run: ${OBJECTCODE}/solver_test @echo @echo "*** Now running the code ***" @echo @mkdir -p data/OUTPUT time ${OBJECTCODE}/solver_test @echo @echo "*** Finished running the code ***" @echo @echo Comparing the current output with an earlier version in data.GW @echo @diff -rwq -x .svn data.GW/ data/ @echo @echo No problems should have been reported @echo ETS Makefile ETS: Status and Standards
Compile the ETS test code The first line identifies the dependencies ${OBJECTCODE}/solver_test: ${OBJECTCODE}/solver_test.o ${ADD_O} ${OBJECTCODE}/libanalytics.a ${OBJECTCODE}/libconvergence.a ${OBJECTCODE}/libitm.a ${LIBSCHEMAS} ${OBJECTCODE}/libets.a What to do to actually compile (link) the code ${FC} ${FCOPTS} -o $@ $^ ${perflib} ${LIBS} $@ translates to the LHS of the : $^ translates to the RHS of the : ETS Makefile ETS: Status and Standards
Run the equilibrium test framework eq_test: ${OBJECTCODE}/eq_test time ${OBJECTCODE}/eq_test gnuplot eq_test.gnuplot @echo @echo @echo "Plots in eq_test.ps" @echo @echo Compile the equilibrium test framework ${OBJECTCODE}/eq_test: ${OBJECTCODE}/eq_test.o ${OBJECTCODE}/libbdseq.a ${OBJECTCODE}/libhelena2.a ${OBJECTCODE}/libets.a ${OBJECTCODE}/libitm.a ${LIBSCHEMAS} ${FC} ${FCOPTS} -o $@ $^ ${perflib} ${LIBS} ETS Makefile ETS: Status and Standards
“make help” will show the possible options help: @echo 'Welcome to the ETS Makefile' @echo '' @echo 'Common entry points' @echo ' run (default) compile and run solver_test (ets test framework using an analytical model)' @echo ' eq_test compile and run eq_test (equilibrium test framework)' @echo ' depend refresh the dependency information' @echo ' clean remove various binaries (.o, .mod, .a and executables)' @echo ' DOC create the Doxygen documentation (in doc/Doxygen/{html,latex,man,rtf,xml})' @echo ' docclean clean the Doxygen documentation area' @echo ' tags create the TAGS file for emacs' @echo ' version write out the current version based on SVN' @echo ' status writes out date, version, hostname and uname' @echo ' SYS writes out the SYS variable name' @echo ' KEPLER recreates the 3 actors (analytics, convergence, itmets)' @echo ' echo output the contents of some Makefile variables (used for debugging the Makefile)' @echo ' help writes out this information' @echo '' ETS Makefile ETS: Status and Standards
Prepare libraries that will be used in the Makefile and for KEPLER ${OBJECTCODE}/libitm.a: ${LIB_ITM_O} ar r $@ $? ranlib $@ ${OBJECTCODE}/libschemas.a: ${LIB_SCHEMAS_O} ar r $@ $? ranlib $@ ${OBJECTCODE}/libets.a: ${LIB_ETS_O} ar r $@ $? ranlib $@ ${OBJECTCODE}/libanalytics.a: ${LIB_ANALYTICS_O} ar r $@ $? ranlib $@ ETS Makefile ETS: Status and Standards
Prepare libraries that will be used in the Makefile and for KEPLER ${OBJECTCODE}/libconvergence.a: ${LIB_CONVERGENCE_O} ar r $@ $? ranlib $@ ${OBJECTCODE}/libbdseq.a: ${LIB_BDSEQ_O} ar r $@ $? ranlib $@ ${OBJECTCODE}/libhelena2.a: ${LIB_HELENA2_O} ar r $@ $? ranlib $@ ${OBJECTCODE}/libneo.a: ${LIB_NEO_O} ar r $@ $? ranlib $@ ETS Makefile ETS: Status and Standards
The following is used for debugging to make sure that the various variable used in the Makefile have the correct values echo: @echo ${OBJECTCODE}/solver_test.o ${ADD_O} ${LIBSCHEMAS} ${OBJECTCODE}/libets.a @echo ${LIBSCHEMAS} ${LIB_SCHEMAS_O} @echo ${ETS_O} @echo ${NEUTRALS_O} @echo ${SOLVER_O} @echo ${BDSEQ_O} @echo ${HELENA2_O} @echo ${NEO_O} ETS Makefile ETS: Status and Standards
Remove the various binaries clean: -rm ${OBJECTCODE}/*.o ${OBJECTCODE}/*.${MOD} ${OBJECTCODE}/solver_test ${OBJECTCODE}/libanalytics.a ${OBJECTCODE}/libconvergence.a ${OBJECTCODE}/libitm.a ${LIBSCHEMAS} ${OBJECTCODE}/libets.a ${OBJECTCODE}/eq_test Remove the doxygen produced documentation docclean: rm -rf doc/Doxygen/html doc/Doxygen/latex doc/Doxygen/man doc/Doxygen/rtf doc/Doxygen/xml ETS Makefile ETS: Status and Standards
A key part of how make works is having the correct dependencies We use a perl script to automatically create the dependencies from the source files Note: we have to remove information about some routines that are obtained elsewhere depend: obj/sfmakedepend -p '$${OBJECTCODE}/' ${INCLUDE} -f ${OBJECTCODE}/dependencies src/*/*.[fF] src/*/*.[fF]90 ifeq ($(UAL),yes) sed -i~ -e '/euitm_schemas/d' ${OBJECTCODE}/dependencies endif sed -i~ -e '/euitm_routines/d' ${OBJECTCODE}/dependencies Useful for emacs tags: rm TAGS ; etags src/*/*.[fF] src/*/*.[fF]90 If no dependecies are available, create them ${OBJECTCODE}/dependencies: mkdir -p ${OBJECTCODE} touch ${OBJECTCODE}/dependencies ${MAKE} depend ETS Makefile ETS: Status and Standards
How to produce the doxygen documentation DOC: ${DOXYGEN} doc/Doxygen/Doxyfile cd doc/Doxygen/latex/ && ${MAKE} Write out version information version: @echo @echo Version of the project = \"`svnversion . repos/ETS/trunk/ETS`\" @echo SVN version of the Makefile = \"'$$Id: Makefile 30 2008-08-27 04:32:33Z dpc $$'\" @echo Write out a line summarizing the environment status: @echo `date +%Y-%m-%d` ${SYS} `svnversion . svn/ets/trunk/ETS` `hostname` `uname -r -p` Write out the “system” name SYS: @echo ${SYS} ETS Makefile ETS: Status and Standards
Automate the update of Kepler actors (need to preserve number and order of arguments) KEPLER: ${OBJECTCODE}/libanalytics.a ${OBJECTCODE}/libconvergence.a ${OBJECTCODE}/libets.a rsync -avP ${OBJECTCODE}/libanalytics.a ${KEPLER}/src/cpp/itm/analytics/ cd ${KEPLER}/src/cpp/itm/analytics/ ; ${MAKE} rsync -avP ${OBJECTCODE}/libconvergence.a ${KEPLER}/src/cpp/itm/convergence/ cd ${KEPLER}/src/cpp/itm/convergence/ ; ${MAKE} rsync -avP ${OBJECTCODE}/libets.a ${KEPLER}/src/cpp/itm/itmets/ cd ${KEPLER}/src/cpp/itm/itmets/ ; ${MAKE} Include the dependencies include ${OBJECTCODE}/dependencies ETS Makefile ETS: Status and Standards
ETS Doxygen comments \author used to identify the author(s) \version updated automatically by SVN !> This routine aimed in testing the solver solution !> method for the set of transport equations !> with given sources and transport coefficients. !> !> \author D.Kalupin, R.Stankiewicz !> !> \version "$Id: solver_test.F90 160 2009-03-25 10:22:17Z coster $" Start of the program PROGRAM SOLVER_TEST ETS Test Framework ETS: Status and Standards
!> Module implementing the ITM basic types !> !> Source: !> based on SOLPS b2mod_types.F !> pulled from ets r100 and extended with input from C. Konz, T. Ribeiro & B. Scott !> !> \author David Coster !> !> \version "$Id: itm_types.f90 8 2009-03-28 10:26:54Z coster $" module itm_types INTEGER, PARAMETER :: ITM_I1 = SELECTED_INT_KIND (2) ! Integer*1 INTEGER, PARAMETER :: ITM_I2 = SELECTED_INT_KIND (4) ! Integer*2 INTEGER, PARAMETER :: ITM_I4 = SELECTED_INT_KIND (9) ! Integer*4 INTEGER, PARAMETER :: ITM_I8 = SELECTED_INT_KIND (18) ! Integer*8 INTEGER, PARAMETER :: R4 = SELECTED_REAL_KIND (6, 37) ! Real*4 INTEGER, PARAMETER :: R8 = SELECTED_REAL_KIND (15, 300) ! Real*8 end module itm_types itm_types ETS: Status and Standards
!> Module implementing the ITM physics constants !> !> Source: !> based on SOLPS b2mod_constants.F !> '09/12/07 xpb : source CODATA 2006 (http://www.nist.gov/)' !> pulled from ets r100 !> !> \author David Coster !> !> \version "$Id: itm_constants.f90 6 2009-03-23 09:38:37Z coster $" module itm_constants use itm_types real (kind = R8), parameter :: itm_pi = 3.141592653589793238462643383280_R8 real (kind = R8), parameter :: itm_c = 2.99792458e8_R8 real (kind = R8), parameter :: itm_me = 9.10938215e-31_R8 real (kind = R8), parameter :: itm_mp = 1.672621637e-27_R8 real (kind = R8), parameter :: itm_ev = 1.602176487e-19_R8 real (kind = R8), parameter :: itm_qe = itm_ev real (kind = R8), parameter :: itm_mu0 = 4.0e-7_R8 * itm_pi real (kind = R8), parameter :: itm_eps0 = 1.0_R8 / (itm_mu0 * itm_c * itm_c) real (kind = R8), parameter :: itm_avogr = 6.02214179e23_R8 real (kind = R8), parameter :: itm_KBolt = 1.3806504e-23_R8 character (len=64), parameter :: itm_constants_version = '$Id: itm_constants.f90 6 2009-03-23 09:38:37Z coster $' end module itm_constants itm_constants ETS: Status and Standards
doxygen http://www.efda-itm.eu/~wwwimp3/ETS/ Understand for fortran (commercial tool) Graphs on the next couple of pages http://www.efda-itm.eu/~wwwimp3/ETS_Understand/Understand/ETS_html/ ETS documentation ETS: Status and Standards
Phase I (initial porting) porting to the ITM Gateway (runs on ITM Gateway, compilers, libraries, etc.) completion of “grant of software license and rights to the ITM-TF” procedure creation of a project under GForge and code under subversion (on the ITM Gateway or mirrored there) Phase II (preparation of stand-alone module) conversion into a module using CPOs conversion of code specific input to XML creation of standalone wrapper for testing (“test bed”) provision of standard test cases standardized build procedure (make) standardized test procedure Phase III (preparation of Kepler actor) creation of a Kepler actor creation of a Kepler test workflow benchmark of Kepler module against original version of code verification of Kepler module (code-code benchmarks) Phase IV (documentation) code documentation (for developers and maintainers) user documentation (for users) Phase V (release candidate cycle) validation by module author/responsible officer release candidate for Kepler module (approved by Project Leader) Phase VI (release cycle) validation by IMP release of Kepler module (approved by Task Force leader) Proposed check list for porting a code or module to the Gateway ETS: Status and Standards