Index: /proj/ice/larour/issm-uci-clean/trunk-jpl/AUTHORS =================================================================== --- /proj/ice/larour/issm-uci-clean/trunk-jpl/AUTHORS (revision 11235) +++ /proj/ice/larour/issm-uci-clean/trunk-jpl/AUTHORS (revision 11236) @@ -1,15 +1,15 @@ Ice Sheet System Model is a JPL/UCI collaboration to develop a massively-parallelized multi-purpose finite element framework dedicated to ice sheet modeling -Team manager: +Project Scientist: Eric Rignot -Development manager: +Project Manager: Eric Larour Current core developers: * Eric Larour - * Helene Seroussi + * Helene Seroussi * Mathieu Morlighem Contributors: Index: /proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/Container/Elements.cpp =================================================================== --- /proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/Container/Elements.cpp (revision 11235) +++ /proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/Container/Elements.cpp (revision 11236) @@ -179,8 +179,6 @@ bool results_as_patches; int numberofvertices,numberofelements; int numberofresults,vectorsize; - int rank; - int minrank; /*Recover parameters: */ parameters->FindParam(&io_gather,SettingsIoGatherEnum); @@ -191,31 +189,25 @@ if(!results_as_patches){ /*No patch here, we prepare vectors*/ - /*Get rank of first cpu that has results*/ - if(this->Size()) rank=my_rank; - else rank=num_procs; - MPI_Allreduce (&rank,&minrank,1,MPI_INT,MPI_MIN,MPI_COMM_WORLD); - /*see what the first element of this partition has in stock (this is common to all partitions)*/ - if(my_rank==minrank){ - if(this->Size()==0) _error_("Cannot write results because there is no element??"); + if(my_rank==0){ + if(this->Size()==0) _error_("Cannot write results because first partition has no element. Maybe too many cpus were requested"); Element* element=(Element*)this->GetObjectByOffset(0); element->ListResultsInfo(&resultsenums,&resultssizes,&resultstimes,&resultssteps,&numberofresults); } - MPI_Bcast(&numberofresults,1,MPI_DOUBLE,minrank,MPI_COMM_WORLD); - + MPI_Bcast(&numberofresults,1,MPI_DOUBLE,0,MPI_COMM_WORLD); /*Get out if there is no results. Otherwise broadcast info*/ if(!numberofresults) return; - if(my_rank!=minrank){ + if(my_rank!=0){ resultsenums=(int*)xmalloc(numberofresults*sizeof(int)); resultssizes=(int*)xmalloc(numberofresults*sizeof(int)); resultstimes=(double*)xmalloc(numberofresults*sizeof(double)); resultssteps=(int*)xmalloc(numberofresults*sizeof(int)); } - MPI_Bcast(resultsenums,numberofresults,MPI_INT,minrank,MPI_COMM_WORLD); - MPI_Bcast(resultssizes,numberofresults,MPI_INT,minrank,MPI_COMM_WORLD); - MPI_Bcast(resultstimes,numberofresults,MPI_DOUBLE,minrank,MPI_COMM_WORLD); - MPI_Bcast(resultssteps,numberofresults,MPI_INT,minrank,MPI_COMM_WORLD); + MPI_Bcast(resultsenums,numberofresults,MPI_INT,0,MPI_COMM_WORLD); + MPI_Bcast(resultssizes,numberofresults,MPI_INT,0,MPI_COMM_WORLD); + MPI_Bcast(resultstimes,numberofresults,MPI_DOUBLE,0,MPI_COMM_WORLD); + MPI_Bcast(resultssteps,numberofresults,MPI_INT,0,MPI_COMM_WORLD); /*Loop over all results and get nodal vector*/ for(int i=0;i and header files. Leaving it + *for reference in case we have a problem here in the future*/ getrusage(RUSAGE_SELF, &rusage); curtime = ((rusage.ru_utime.tv_sec + rusage.ru_stime.tv_sec) + Index: /proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/objects/Vertex.cpp =================================================================== --- /proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/objects/Vertex.cpp (revision 11235) +++ /proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/objects/Vertex.cpp (revision 11236) @@ -70,7 +70,7 @@ printf(" y: %g\n",y); printf(" z: %g\n",z); printf(" sigma: %g\n",sigma); - printf(" connectivity: %i\n",connectivity); + printf(" connectivity: %g\n",connectivity); printf(" dof: %i\n",dof); printf(" clone: %i\n",clone); Index: /proj/ice/larour/issm-uci-clean/trunk-jpl/src/dox/issm.dox =================================================================== --- /proj/ice/larour/issm-uci-clean/trunk-jpl/src/dox/issm.dox (revision 11235) +++ /proj/ice/larour/issm-uci-clean/trunk-jpl/src/dox/issm.dox (revision 11236) @@ -45,38 +45,42 @@ LanguagefilesblankcommentcodeTotal - C++ 53115433171695734489946 + C++ 53315543172445784890635 - MATLAB 9707248137163160852572 + MATLAB 9707187136303160152418 - C/C++ Header 397304727061026216015 + C/C++ Header 399306427261034316133 - Objective C 32990402501 + m4 223816318712272 - Bourne Shell 95998272429 + Objective C 9980370468 - Perl 32123240284 + Bourne Shell 85998262419 - IDL 1184124146 + Perl 32123240284 - C 2332430 + IDL 1184124146 - Python 2141318 + C 2332430 - SUM: 19472592933723100289159941 + Python 2141318 + + SUM: 19292623233895102696162823 + + Copyright (C) 2011 */ Index: /proj/ice/larour/issm-uci-clean/trunk-jpl/src/m/utils/Geometry/FlagElements.m =================================================================== --- /proj/ice/larour/issm-uci-clean/trunk-jpl/src/m/utils/Geometry/FlagElements.m (revision 11235) +++ /proj/ice/larour/issm-uci-clean/trunk-jpl/src/m/utils/Geometry/FlagElements.m (revision 11236) @@ -31,6 +31,9 @@ %does the region domain outline exist or do we have to look for xlim,ylim in basinzoom? if ~exist(region,'file'), + if (length(region)>3 & ~strcmp(region(end-3),'.exp')), + error(['Error: File ' region ' not found!']); + end [xlim,ylim]=basinzoom('basin',region); flag_nodes=double(md.mesh.xxlim(1) & md.mesh.yylim(1)); flag=prod(flag_nodes(md.mesh.elements),2); Index: /proj/ice/larour/issm-uci-clean/trunk-jpl/src/m/classes/inversion.m =================================================================== --- /proj/ice/larour/issm-uci-clean/trunk-jpl/src/m/classes/inversion.m (revision 11235) +++ /proj/ice/larour/issm-uci-clean/trunk-jpl/src/m/classes/inversion.m (revision 11236) @@ -107,7 +107,7 @@ fielddisplay(obj,'iscontrol','is inversion activated?'); fielddisplay(obj,'control_parameters','parameter where inverse control is carried out; ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}'); fielddisplay(obj,'nsteps','number of optimization searches'); - fielddisplay(obj,'cost_functions','indicate the type of response for each optimization step'); + fielddisplay(obj,'cost_functions','indicate the type of response for each optimization steps'); fielddisplay(obj,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'); fielddisplay(obj,'cost_function_threshold','misfit convergence criterion. Default is 1%, NaN if not applied'); fielddisplay(obj,'maxiter_per_step','maximum iterations during each optimization step'); Index: /proj/ice/larour/issm-uci-clean/trunk-jpl/doc/issmdoc.m =================================================================== --- /proj/ice/larour/issm-uci-clean/trunk-jpl/doc/issmdoc.m (revision 11235) +++ /proj/ice/larour/issm-uci-clean/trunk-jpl/doc/issmdoc.m (revision 11236) @@ -8,8 +8,8 @@ disp(sprintf('%s',' go to ',ISSM_TIER,'/examples/SquareIceshelf')); disp(sprintf('%s',' md=model; %creates a new empty model structure')); disp(sprintf('%s',' md=triangle(md,''DomainOutline.exp'',50000); %creates a mesh of the domain outline with a resolution of 50000m')); -disp(sprintf('%s',' md=setmask(md,''all'',''''); %defines the glacier system as an ice shelf (no island)')); +disp(sprintf('%s',' md=geography(md,''all'',''''); %defines the glacier system as an ice shelf (no island)')); disp(sprintf('%s',' md=parameterize(md,''Square.par''); %fills all the other fields of the model')); -disp(sprintf('%s',' md=setflowequation(md,''macayeal'',''all''); %defines all elements as MacAyeal''s')); -disp(sprintf('%s',' md=solve(md,DiagnosticSolutionEnum); %generate the velocity field of the ice shelf')); -disp(sprintf('%s',' plotmodel(md,''data'',md.results.DiagnosticSolucion.Vel); %displays the velocity (type plotdoc for plotmodel help)')); +disp(sprintf('%s',' md=setelementstype(md,''macayeal'',''all''); %defines all elements as MacAyeal''s')); +disp(sprintf('%s',' md=solve(md,DiagnosticSolutionEnum); %generate the velocity field')); +disp(sprintf('%s',' plotmodel(md,''data'',md.results.DiagnosticSolution.Vel); %displays the velocity (type plotdoc for plotmodel help)')); Index: /proj/ice/larour/issm-uci-clean/trunk-jpl/NEWS =================================================================== --- /proj/ice/larour/issm-uci-clean/trunk-jpl/NEWS (revision 11235) +++ /proj/ice/larour/issm-uci-clean/trunk-jpl/NEWS (revision 11236) @@ -1,3 +1,4 @@ + please go to the ISSM website for the latest news: http://issm.jpl.nasa.gov/ Index: /proj/ice/larour/issm-uci-clean/trunk-jpl/examples/SquareIceShelf/Square.par =================================================================== --- /proj/ice/larour/issm-uci-clean/trunk-jpl/examples/SquareIceShelf/Square.par (revision 11235) +++ /proj/ice/larour/issm-uci-clean/trunk-jpl/examples/SquareIceShelf/Square.par (revision 11236) @@ -10,9 +10,9 @@ md.geometry.surface=md.geometry.bed+md.geometry.thickness; disp(' creating drag'); -pos=find(md.mask.elementonfloatingice); -md.friction.coefficient=200*ones(md.mesh.numberofvertices,1); %q=1. -md.friction.coefficient(md.mesh.elements(pos,:))=0; +pos=find(md.mask.vertexonfloatingice); +md.friction.coefficient=200*ones(md.mesh.numberofvertices,1); +md.friction.coefficient(pos)=0; md.friction.p=ones(md.mesh.numberofelements,1); md.friction.q=ones(md.mesh.numberofelements,1); Property changes on: /proj/ice/larour/issm-uci-clean/trunk-jpl ___________________________________________________________________ Modified: svn:mergeinfo Merged /issm/trunk:r11027-11232