Changeset 19793
- Timestamp:
- 11/23/15 19:23:20 (9 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 4 added
- 29 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/FemModel.cpp
r19764 r19793 112 112 char *lockfilename = NULL; 113 113 114 this->parameters->FindParam(&outbinfilename,OutputFileNameEnum); 115 this->parameters->FindParam(&lockfilename,LockFileNameEnum); 114 #ifndef _HAVE_JAVASCRIPT_ 115 if(this->parameters->Exist(OutputFileNameEnum)) this->parameters->FindParam(&outbinfilename,OutputFileNameEnum); 116 if(this-parameters->Exist(LockFileNameEnum)) this->parameters->FindParam(&lockfilename,LockFileNameEnum); 117 #endif 116 118 117 119 /*Delete all the datasets: */ … … 2335 2337 } 2336 2338 /*}}}*/ 2339 2340 #ifdef _HAVE_JAVASCRIPT_ 2341 FemModel::FemModel(IssmDouble* buffer, int buffersize, char* toolkits, char* solution, char* modelname,ISSM_MPI_Comm incomm, bool trace){ /*{{{*/ 2342 /*configuration: */ 2343 int solution_type; 2344 int ierr; 2345 2346 /*First things first, store the communicator, and set it as a global variable: */ 2347 this->comm=incomm; 2348 this->SetStaticComm(); 2349 2350 /*Start profiler: */ 2351 this->profiler=new Profiler(); 2352 profiler->Tag(Start); 2353 2354 /*From command line arguments, retrieve different filenames needed to create the FemModel: */ 2355 solution_type=StringToEnumx(solution); 2356 2357 /*Create femmodel from input files: */ 2358 profiler->Tag(StartInit); 2359 this->InitFromBuffers((char*)buffer,buffersize,toolkits, solution_type,trace,NULL); 2360 profiler->Tag(FinishInit); 2361 2362 } 2363 /*}}}*/ 2364 void FemModel::InitFromBuffers(char* buffer, int buffersize, char* toolkits, int in_solution_type, bool trace, IssmPDouble* X){/*{{{*/ 2365 2366 /*intermediary*/ 2367 int i; 2368 int analysis_type; 2369 FILE *IOMODEL = NULL; 2370 FILE *toolkitsoptionsfid = NULL; 2371 FILE *output_fid = NULL; 2372 int my_rank; 2373 size_t outputsize; 2374 char *outputbuffer; 2375 const char* rootpath=""; //needed for Dakota runs only, which we won't do here. 2376 2377 /*recover my_rank:*/ 2378 my_rank=IssmComm::GetRank(); 2379 2380 /*Initialize internal data: */ 2381 this->solution_type = in_solution_type; 2382 this->analysis_counter = nummodels-1; //point to last analysis_type carried out. 2383 this->results = new Results(); //not initialized by CreateDataSets 2384 2385 /*Open input file on cpu 0 and create IoModel */ 2386 if(my_rank==0) IOMODEL = fmemopen((void*)buffer, buffersize, "rb"); 2387 IoModel* iomodel = new IoModel(IOMODEL,in_solution_type,trace,X); 2388 2389 /*Figure out what analyses are activated for this solution*/ 2390 SolutionAnalysesList(&this->analysis_type_list,&this->nummodels,iomodel,this->solution_type); 2391 2392 /*Open toolkits file: */ 2393 toolkitsoptionsfid=fmemopen((void*)toolkits, strlen(toolkits)+1, "r"); 2394 2395 /*create datasets for all analyses*/ 2396 ModelProcessorx(&this->elements,&this->nodes,&this->vertices,&this->materials,&this->constraints,&this->loads,&this->parameters,iomodel,toolkitsoptionsfid,(char*)rootpath,this->solution_type,this->nummodels,this->analysis_type_list); 2397 2398 /*do the post-processing of the datasets to get an FemModel that can actually run analyses: */ 2399 for(i=0;i<nummodels;i++){ 2400 2401 if(VerboseMProcessor()) _printf0_(" Processing finite element model of analysis " << EnumToStringx(analysis_type_list[i]) << ":\n"); 2402 analysis_type=analysis_type_list[i]; 2403 this->SetCurrentConfiguration(analysis_type); 2404 2405 if(i==0){ 2406 if(VerboseMProcessor()) _printf0_(" creating vertex PIDs\n"); 2407 VerticesDofx(vertices,parameters); //only call once, we only have one set of vertices 2408 } 2409 2410 if(VerboseMProcessor()) _printf0_(" resolving node constraints\n"); 2411 SpcNodesx(nodes,constraints,parameters,analysis_type); 2412 2413 if(VerboseMProcessor()) _printf0_(" creating nodal degrees of freedom\n"); 2414 NodesDofx(nodes,parameters,analysis_type); 2415 2416 if(VerboseMProcessor()) _printf0_(" configuring element and loads\n"); 2417 ConfigureObjectsx(elements, loads, nodes, vertices, materials,parameters); 2418 } 2419 2420 /*Close input file and toolkits file descriptors: */ 2421 if(my_rank==0) fclose(IOMODEL); 2422 fclose(toolkitsoptionsfid); 2423 2424 /*Open output file once for all and add output file descriptor to parameters*/ 2425 output_fid=open_memstream(&outputbuffer,&outputsize); 2426 if(output_fid==NULL)_error_("FemModel::InitFromBuffers error message: could not initialize output stream"); 2427 this->parameters->SetParam(output_fid,OutputFilePointerEnum); 2428 2429 /*Clean up*/ 2430 delete iomodel; 2431 }/*}}}*/ 2432 void FemModel::CleanUpJs(void){/*{{{*/ 2433 2434 /*Intermediary*/ 2435 FILE *output_fid; 2436 2437 /*Close output file: */ 2438 this->parameters->FindParam(&output_fid,OutputFilePointerEnum); 2439 fclose(output_fid); 2440 2441 /*Before we delete the profiler, report statistics for this run: */ 2442 profiler->Tag(Finish); //final tagging 2443 _printf0_("\n"); 2444 _printf0_(" "<<setw(40)<<left<<"FemModel initialization elapsed time:"<<profiler->DeltaTime(StartInit,FinishInit) << "\n"); 2445 _printf0_(" "<<setw(40)<<left<<"Core solution elapsed time:"<<profiler->DeltaTime(StartCore,FinishCore) << "\n"); 2446 _printf0_("\n"); 2447 _printf0_(" Total elapsed time: " 2448 <<profiler->DeltaTimeModHour(Start,Finish)<<" hrs " 2449 <<profiler->DeltaTimeModMin(Start,Finish)<<" min " 2450 <<profiler->DeltaTimeModSec(Start,Finish)<<" sec" 2451 ); 2452 _printf0_("\n"); 2453 } 2454 /*}}}*/ 2455 #endif -
issm/trunk-jpl/src/c/classes/FemModel.h
r19764 r19793 119 119 void HydrologyEPLupdateDomainx(IssmDouble* pEplcount); 120 120 void UpdateConstraintsL2ProjectionEPLx(IssmDouble* pL2count); 121 122 #ifdef _HAVE_JAVASCRIPT_ 123 FemModel(IssmDouble* buffer, int buffersize, char* toolkits, char* solution, char* modelname,ISSM_MPI_Comm incomm, bool trace=false); 124 void InitFromBuffers(char* buffer, int buffersize, char* toolkits, int solution_type,bool trace,IssmPDouble* X=NULL); 125 void CleanUpJs(void); 126 #endif 121 127 }; 128 122 129 123 130 #endif -
issm/trunk-jpl/src/m/array/arrayoperations.js
r19787 r19793 112 112 function IsArray(object) { //{{{ 113 113 114 if( Object.prototype.toString.call( object ) === '[object Array]' ) { 115 return 1; 116 } 117 else return 0; 114 var type=Object.prototype.toString.call( object ); 115 if( type === '[object Array]' ) return 1; 116 if( type === '[object Float64Array]' ) return 1; 117 if( type === '[object Float32Array]' ) return 1; 118 if( type === '[object Int32Array]' ) return 1; 119 if( type === '[object Int16Array]' ) return 1; 120 if( type === '[object Uint32Array]' ) return 1; 121 if( type === '[object Uint16Array]' ) return 1; 122 if( type === '[object Uint8Array]' ) return 1; 123 return 0; 118 124 119 125 } //}}} -
issm/trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.js
r19759 r19793 31 31 md.stressbalance.spcvy=NewArrayFill(md.mesh.numberofvertices,NaN); 32 32 md.stressbalance.spcvz=NewArrayFill(md.mesh.numberofvertices,NaN); 33 md.stressbalance.referential=NewArrayFill(md.mesh.numberofvertices,NaN); 33 md.stressbalance.referential=Create2DArray(md.mesh.numberofvertices,6); 34 for(var i=0;i<md.mesh.numberofvertices;i++)for(var j=0;j<6;j++)md.stressbalance.referential[i][j]=NaN; 34 35 md.stressbalance.loadingforce=NewArrayFill(md.mesh.numberofvertices,0); 35 36 … … 82 83 83 84 //Deal with other boundary conditions 84 if ( md.balancethickness.thickening_rate === NaN){85 if (isNaN(md.balancethickness.thickening_rate)){ 85 86 md.balancethickness.thickening_rate=NewArrayFill(md.mesh.numberofvertices,0); 86 87 console.log(' no balancethickness.thickening_rate specified: values set as zero'); -
issm/trunk-jpl/src/m/classes/SMBforcing.js
r19791 r19793 21 21 this.initialize = function(md) {// {{{ 22 22 23 if ( self.mass_balance === NaN){23 if (isNaN(self.mass_balance)){ 24 24 self.mass_balance=NewArrayFill(md.mesh.numberofvertices,0); 25 25 console.log(' no smb.mass_balance specified: values set as zero'); … … 47 47 //process requested outputs 48 48 outputs = this.requested_outputs; 49 for (var i=0;i<outputs ;i++){49 for (var i=0;i<outputs.length;i++){ 50 50 if (outputs[i] == 'default') { 51 51 outputs.splice(i,1); 52 outputs.push(this.defaultoutputs()); 52 newoutputs=this.defaultoutputs(md); 53 for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]); 53 54 } 54 55 } 55 WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum ,'format','StringArray');56 WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray'); 56 57 57 58 }//}}} 58 59 //properties 59 60 this.mass_balance = NaN; 60 this.requested_outputs = [ ''];61 this.requested_outputs = []; 61 62 this.setdefaultparameters(); 62 63 } -
issm/trunk-jpl/src/m/classes/balancethickness.js
r19791 r19793 38 38 39 39 WriteData(fid,'object',this,'fieldname','spcthickness','format','DoubleMat','mattype',1); 40 WriteData(fid,'object',this,'fieldname','thickening_rate','format','DoubleMat','mattype',1,'scale',1 ./yts);40 WriteData(fid,'object',this,'fieldname','thickening_rate','format','DoubleMat','mattype',1,'scale',1/yts); 41 41 WriteData(fid,'object',this,'fieldname','stabilization','format','Integer'); 42 42 WriteData(fid,'object',this,'fieldname','omega','format','DoubleMat','mattype',1); -
issm/trunk-jpl/src/m/classes/basalforcings.js
r19791 r19793 22 22 this.initialize = function (md){ // {{{ 23 23 24 if ( this.groundedice_melting_rate === NaN){24 if (isNaN(this.groundedice_melting_rate)){ 25 25 this.groundedice_melting_rate=NewArrayFill(md.mesh.numberofvertices,0); 26 26 console.log(' no basalforcings.groundedice_melting_rate specified: values set as zero'); 27 27 } 28 28 29 if ( this.floatingice_melting_rate === NaN){29 if (isNaN(this.floatingice_melting_rate)){ 30 30 this.floatingice_melting_rate=NewArrayFill(md.mesh.numberofvertices,0); 31 31 console.log(' no basalforcings.floatingice_melting_rate specified: values set as zero'); -
issm/trunk-jpl/src/m/classes/clusters/generic.js
r19787 r19793 36 36 console.log(sprintf(' shell: %s',this.shell)); 37 37 }// }}} 38 this.classname= function(){// {{{ 39 return "generic"; 40 }// }}} 38 41 this.checkconsistency = function (md,solution,analyses) { //{{{ 39 42 if (cluster.np<1){ -
issm/trunk-jpl/src/m/classes/damage.js
r19791 r19793 87 87 } 88 88 else if (this.law!=0){ 89 if (solution==DamageEvolutionSolutionEnum ){89 if (solution==DamageEvolutionSolutionEnum()){ 90 90 throw Error('Invalid evolution law (md.damage.law) for a damage solution'); 91 91 } … … 116 116 //process requested outputs 117 117 outputs = this.requested_outputs; 118 for (var i=0;i<outputs ;i++){118 for (var i=0;i<outputs.length;i++){ 119 119 if (outputs[i] == 'default') { 120 120 outputs.splice(i,1); … … 123 123 } 124 124 if (this.isdamage){ 125 WriteData(fid,'data',outputs,'enum',DamageEvolutionRequestedOutputsEnum ,'format','StringArray');125 WriteData(fid,'data',outputs,'enum',DamageEvolutionRequestedOutputsEnum(),'format','StringArray'); 126 126 } 127 127 … … 129 129 this.defaultoutputs = function(md){ //{{{ 130 130 131 if (md. domaintype() == '2Dhorizontal') return 'DamageDbar';131 if (md.mesh.domaintype() == '2Dhorizontal') return 'DamageDbar'; 132 132 else return 'DamageD'; 133 133 … … 155 155 this.healing = 0; 156 156 this.equiv_stress = 0; 157 this.requested_outputs = [ ''];157 this.requested_outputs = []; 158 158 159 159 this.setdefaultparameters(); -
issm/trunk-jpl/src/m/classes/friction.js
r19791 r19793 32 32 var yts=365.0*24.0*3600.0; 33 33 34 WriteData(fid,'enum',FrictionLawEnum ,'data',1,'format','Integer');34 WriteData(fid,'enum',FrictionLawEnum(),'data',1,'format','Integer'); 35 35 WriteData(fid,'object',this,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1); 36 36 //WriteData(fid,'object',this,'fieldname','coefficient','format','DoubleMat','mattype',1); -
issm/trunk-jpl/src/m/classes/geometry.js
r19791 r19793 55 55 this.setdefaultparameters(); 56 56 //}}} 57 58 57 } -
issm/trunk-jpl/src/m/classes/initialization.js
r19791 r19793 35 35 checkfield(md,'fieldname','initialization.vy','NaN',1,'size',[md.mesh.numberofvertices, 1]); 36 36 } 37 if(ArrayAnyEqual(ArrayIsMember(BalancethicknessSolutionEnum(),analyses),1) & (solution==BalancethicknessSolutionEnum )){37 if(ArrayAnyEqual(ArrayIsMember(BalancethicknessSolutionEnum(),analyses),1) & (solution==BalancethicknessSolutionEnum())){ 38 38 checkfield(md,'fieldname','initialization.vx','NaN',1,'size',[md.mesh.numberofvertices, 1]); 39 39 checkfield(md,'fieldname','initialization.vy','NaN',1,'size',[md.mesh.numberofvertices, 1]); … … 85 85 var yts=365.0*24.0*3600.0; 86 86 87 WriteData(fid,'data',this.vx,'format','DoubleMat','mattype',1,'enum',VxEnum ,'scale',1./yts);88 WriteData(fid,'data',this.vy,'format','DoubleMat','mattype',1,'enum',VyEnum ,'scale',1./yts);89 WriteData(fid,'data',this.vz,'format','DoubleMat','mattype',1,'enum',VzEnum ,'scale',1./yts);90 WriteData(fid,'data',this.pressure,'format','DoubleMat','mattype',1,'enum',PressureEnum );91 WriteData(fid,'data',this.temperature,'format','DoubleMat','mattype',1,'enum',TemperatureEnum );92 WriteData(fid,'data',this.waterfraction,'format','DoubleMat','mattype',1,'enum',WaterfractionEnum );93 WriteData(fid,'data',this.sediment_head,'format','DoubleMat','mattype',1,'enum',SedimentHeadEnum );94 WriteData(fid,'data',this.epl_head,'format','DoubleMat','mattype',1,'enum',EplHeadEnum );95 WriteData(fid,'data',this.epl_thickness,'format','DoubleMat','mattype',1,'enum',HydrologydcEplThicknessEnum );96 WriteData(fid,'data',this.watercolumn,'format','DoubleMat','mattype',1,'enum',WatercolumnEnum );87 WriteData(fid,'data',this.vx,'format','DoubleMat','mattype',1,'enum',VxEnum(),'scale',1./yts); 88 WriteData(fid,'data',this.vy,'format','DoubleMat','mattype',1,'enum',VyEnum(),'scale',1./yts); 89 WriteData(fid,'data',this.vz,'format','DoubleMat','mattype',1,'enum',VzEnum(),'scale',1./yts); 90 WriteData(fid,'data',this.pressure,'format','DoubleMat','mattype',1,'enum',PressureEnum()); 91 WriteData(fid,'data',this.temperature,'format','DoubleMat','mattype',1,'enum',TemperatureEnum()); 92 WriteData(fid,'data',this.waterfraction,'format','DoubleMat','mattype',1,'enum',WaterfractionEnum()); 93 WriteData(fid,'data',this.sediment_head,'format','DoubleMat','mattype',1,'enum',SedimentHeadEnum()); 94 WriteData(fid,'data',this.epl_head,'format','DoubleMat','mattype',1,'enum',EplHeadEnum()); 95 WriteData(fid,'data',this.epl_thickness,'format','DoubleMat','mattype',1,'enum',HydrologydcEplThicknessEnum()); 96 WriteData(fid,'data',this.watercolumn,'format','DoubleMat','mattype',1,'enum',WatercolumnEnum()); 97 97 98 98 if (md.thermal.isenthalpy){ -
issm/trunk-jpl/src/m/classes/masstransport.js
r19791 r19793 68 68 //process requested outputs 69 69 outputs = this.requested_outputs; 70 for (var i=0;i<outputs ;i++){70 for (var i=0;i<outputs.length;i++){ 71 71 if (outputs[i] == 'default') { 72 72 outputs.splice(i,1); 73 outputs.push(this.defaultoutputs()); 73 newoutputs=this.defaultoutputs(md); 74 for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]); 74 75 } 75 76 } 76 WriteData(fid,'data',outputs,'enum',MasstransportRequestedOutputsEnum ,'format','StringArray');77 WriteData(fid,'data',outputs,'enum',MasstransportRequestedOutputsEnum(),'format','StringArray'); 77 78 }//}}} 78 79 this.defaultoutputs = function(md) { //{{{ … … 89 90 this.vertex_pairing = NaN; 90 91 this.penalty_factor = 0; 91 this.requested_outputs = [ ''];92 this.requested_outputs = []; 92 93 93 94 this.setdefaultparameters(); -
issm/trunk-jpl/src/m/classes/model.js
r19780 r19793 66 66 this.settings = new settings(); 67 67 this.toolkits = new toolkits(); 68 this.cluster = new generic();68 this.cluster = new local(); 69 69 this.balancethickness = new balancethickness(); 70 70 this.stressbalance = new stressbalance(); -
issm/trunk-jpl/src/m/classes/outputdefinition.js
r19791 r19793 7 7 //methods 8 8 this.setdefaultparameters = function(){// {{{ 9 this.definitions= {};9 this.definitions=[]; 10 10 }// }}} 11 11 this.disp= function(){// {{{ … … 41 41 //properties 42 42 // {{{ 43 this.definitions = {};43 this.definitions = []; 44 44 this.setdefaultparameters(); 45 45 //}}} -
issm/trunk-jpl/src/m/classes/qmu.js
r19791 r19793 103 103 WriteData(fid,'object',this,'fieldname','isdakota','format','Boolean'); 104 104 if (!this.isdakota){ 105 WriteData(fid,'data',false,'enum',QmuMassFluxSegmentsPresentEnum ,'format','Boolean');105 WriteData(fid,'data',false,'enum',QmuMassFluxSegmentsPresentEnum(),'format','Boolean'); 106 106 return; 107 107 } … … 112 112 WriteData(fid,'object',this,'fieldname','responsedescriptors','format','StringArray'); 113 113 if (this.mass_flux_segments.length){ 114 WriteData(fid,'data',this.mass_flux_segments,'enum',MassFluxSegmentsEnum ,'format','MatArray');114 WriteData(fid,'data',this.mass_flux_segments,'enum',MassFluxSegmentsEnum(),'format','MatArray'); 115 115 flag=true; 116 116 } 117 117 else flag=false; 118 WriteData(fid,'data',flag,'enum',QmuMassFluxSegmentsPresentEnum ,'format','Boolean');118 WriteData(fid,'data',flag,'enum',QmuMassFluxSegmentsPresentEnum(),'format','Boolean'); 119 119 }//}}} 120 120 //properties -
issm/trunk-jpl/src/m/classes/steadystate.js
r19791 r19793 52 52 //process requested outputs 53 53 outputs = this.requested_outputs; 54 for (var i=0;i<outputs ;i++){54 for (var i=0;i<outputs.length;i++){ 55 55 if (outputs[i] == 'default') { 56 56 outputs.splice(i,1); 57 outputs.push(this.defaultoutputs()); 57 newoutputs=this.defaultoutputs(md); 58 for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]); 58 59 } 59 60 } 60 WriteData(fid,'data',outputs,'enum',SteadystateRequestedOutputsEnum ,'format','StringArray');61 WriteData(fid,'data',outputs,'enum',SteadystateRequestedOutputsEnum(),'format','StringArray'); 61 62 }//}}} 62 63 this.defaultoutputs = function(md) { //{{{ … … 64 65 var list=[]; 65 66 66 for (var i=0;i<md.stressbalance.defaultoutputs( ).length;i++)list.push(md.stressbalance.defaultoutputs()[i]);67 for (var i=0;i<md.thermal.defaultoutputs( ).length;i++)list.push(md.thermal.defaultoutputs()[i]);67 for (var i=0;i<md.stressbalance.defaultoutputs(md).length;i++)list.push(md.stressbalance.defaultoutputs(md)[i]); 68 for (var i=0;i<md.thermal.defaultoutputs(md).length;i++)list.push(md.thermal.defaultoutputs(md)[i]); 68 69 69 70 return list; -
issm/trunk-jpl/src/m/classes/stressbalance.js
r19791 r19793 162 162 lz=NewArrayFill(this.loadingforce.length,0); for(var i=0;i<lx.length;i++)lz[i]=this.loadingforce[i][2]; 163 163 164 WriteData(fid,'data',lx,'format','DoubleMat','mattype',1,'enum',LoadingforceXEnum );165 WriteData(fid,'data',ly,'format','DoubleMat','mattype',1,'enum',LoadingforceYEnum );166 WriteData(fid,'data',lz,'format','DoubleMat','mattype',1,'enum',LoadingforceZEnum );164 WriteData(fid,'data',lx,'format','DoubleMat','mattype',1,'enum',LoadingforceXEnum()); 165 WriteData(fid,'data',ly,'format','DoubleMat','mattype',1,'enum',LoadingforceYEnum()); 166 WriteData(fid,'data',lz,'format','DoubleMat','mattype',1,'enum',LoadingforceZEnum()); 167 167 168 168 //process requested outputs 169 169 outputs = this.requested_outputs; 170 for (var i=0;i<outputs ;i++){170 for (var i=0;i<outputs.length;i++){ 171 171 if (outputs[i] == 'default') { 172 172 outputs.splice(i,1); 173 outputs.push(this.defaultoutputs()); 174 } 175 } 176 WriteData(fid,'data',outputs,'enum',StressbalanceRequestedOutputsEnum,'format','StringArray'); 173 newoutputs=this.defaultoutputs(md); 174 for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]); 175 } 176 } 177 WriteData(fid,'data',outputs,'enum',StressbalanceRequestedOutputsEnum(),'format','StringArray'); 177 178 }//}}} 178 179 this.defaultoutputs = function(md){ // {{{ … … 204 205 this.referential = NaN; 205 206 this.loadingforce = NaN; 206 this.requested_outputs = [ '']207 this.requested_outputs = [] 207 208 208 209 this.setdefaultparameters(); -
issm/trunk-jpl/src/m/classes/thermal.js
r19791 r19793 97 97 //process requested outputs 98 98 outputs = this.requested_outputs; 99 for (var i=0;i<outputs ;i++){99 for (var i=0;i<outputs.length;i++){ 100 100 if (outputs[i] == 'default') { 101 101 outputs.splice(i,1); 102 outputs.push(this.defaultoutputs()); 102 newoutputs=this.defaultoutputs(md); 103 for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]); 103 104 } 104 105 } -
issm/trunk-jpl/src/m/classes/toolkits.js
r19787 r19793 47 47 } 48 48 } // }}} 49 this.ToolkitsFile = function(filename) { //{{{ 50 //TOOLKITSFILE - build toolkits file (in string format) 51 // 52 // Build a Petsc compatible options string, from the toolkits model field + return options string. 53 // This file string will also be used when the toolkit used is 'issm' instead of 'petsc' 54 // 55 // Usage: var toolkitsstring = toolkits.ToolkitsFile(); 56 57 var string = ''; 58 59 //write header 60 string += sprintf('%s%s%s\n','\%Toolkits options file: ',filename,' written from Javascript toolkits array'); 61 62 //start writing options 63 for (var analysis in this){ 64 65 if(typeof this[analysis] == 'object') options=this[analysis]; else continue; 66 67 //first write analysis: 68 string += sprintf('\n+%s\n',analysis); //append a + to recognize it's an analysis enum 69 70 //now, write options 71 72 for(var optionname in options){ 73 optionvalue=options[optionname]; 74 75 if (optionvalue.length==0){ 76 //this option has only one argument 77 string+=sprintf('-%s\n',optionname); 78 } 79 else{ 80 //option with value. value can be string or scalar 81 if (typeof optionvalue == 'number'){ 82 string+=sprintf('-%s %g\n',optionname,optionvalue); 83 } 84 else if (typeof optionvalue == 'string'){ 85 string+=sprintf('-%s %s\n',optionname,optionvalue); 86 } 87 else throw Error(sprintf("ToolkitsFile error: option '%s' is not well formatted",optionname)); 88 } 89 } 90 } 91 return string; 92 } //}}} 49 93 //properties 50 94 // {{{ -
issm/trunk-jpl/src/m/classes/transient.js
r19791 r19793 76 76 //process requested outputs 77 77 outputs = this.requested_outputs; 78 for (var i=0;i<outputs ;i++){78 for (var i=0;i<outputs.length;i++){ 79 79 if (outputs[i] == 'default') { 80 80 outputs.splice(i,1); 81 outputs.push(this.defaultoutputs()); 81 newoutputs=this.defaultoutputs(md); 82 for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]); 82 83 } 83 84 } 84 WriteData(fid,'data',outputs,'enum',TransientRequestedOutputsEnum ,'format','StringArray');85 WriteData(fid,'data',outputs,'enum',TransientRequestedOutputsEnum(),'format','StringArray'); 85 86 }//}}} 86 87 this.defaultoutputs = function(md) { //{{{ -
issm/trunk-jpl/src/m/classes/verbose.js
r19791 r19793 29 29 //BEGINDISP 30 30 console.log(sprintf('verbose class echo:')); 31 console.log(sprintf(' % 15s : %s','mprocessor',mat2str(verbose.mprocessor)));32 console.log(sprintf(' % 15s : %s','module',mat2str(verbose.module)));33 console.log(sprintf(' % 15s : %s','solution',mat2str(verbose.solution)));34 console.log(sprintf(' % 15s : %s','solver',mat2str(verbose.solver)));35 console.log(sprintf(' % 15s : %s','convergence',mat2str(verbose.convergence)));36 console.log(sprintf(' % 15s : %s','control',mat2str(verbose.control)));37 console.log(sprintf(' % 15s : %s','qmu',mat2str(verbose.qmu)));38 console.log(sprintf(' % 15s : %s','autodiff',mat2str(verbose.autodiff)));39 console.log(sprintf(' % 15s : %s','smb',mat2str(verbose.smb)));31 console.log(sprintf(' %s : %i','mprocessor',this.mprocessor)); 32 console.log(sprintf(' %s : %i','module',this.module)); 33 console.log(sprintf(' %s : %i','solution',this.solution)); 34 console.log(sprintf(' %s : %i','solver',this.solver)); 35 console.log(sprintf(' %s : %i','convergence',this.convergence)); 36 console.log(sprintf(' %s : %i','control',this.control)); 37 console.log(sprintf(' %s : %i','qmu',this.qmu)); 38 console.log(sprintf(' %s : %i','autodiff',this.autodiff)); 39 console.log(sprintf(' %s : %i','smb',this.smb)); 40 40 //ENDDISP 41 41 }// }}} … … 50 50 //BEGINVERB2BIN 51 51 var binary=0; 52 if ( verbose.mprocessor) binary=Math.bitOr(binary1);53 if ( verbose.module) binary=Math.bitOr(binary2);54 if ( verbose.solution) binary=Math.bitOr(binary4);55 if ( verbose.solver) binary=Math.bitOr(binary8);56 if ( verbose.convergence) binary=Math.bitOr(binary16);57 if ( verbose.control) binary=Math.bitOr(binary32);58 if ( verbose.qmu) binary=Math.bitOr(binary64);59 if ( verbose.autodiff) binary=Math.bitOr(binary128);60 if ( verbose.smb) binary=Math.bitOr(binary256);52 if (this.mprocessor) binary=binary|1; 53 if (this.module) binary=binary|2; 54 if (this.solution) binary=binary|4; 55 if (this.solver) binary=binary|8; 56 if (this.convergence) binary=binary|16; 57 if (this.control) binary=binary|32; 58 if (this.qmu) binary=binary|64; 59 if (this.autodiff) binary=binary|128; 60 if (this.smb) binary=binary|256; 61 61 //ENDVERB2BIN 62 62 return binary; -
issm/trunk-jpl/src/m/io/fileptr.js
r19791 r19793 73 73 } //}}} 74 74 this.rawbuffer = function () { //{{{ 75 return this.buffer ;75 return this.buffer.slice(0,this.ptr); 76 76 } //}}} 77 77 this.resize = function () { //{{{ -
issm/trunk-jpl/src/m/plot/processdata.js
r19759 r19793 15 15 16 16 //check format 17 if ( data.length ==0 | data === [] | typeof data === 'number' | data === NaN){17 if ( data.length ==0 | data === [] | typeof data === 'number' | isNaN(data) ){ 18 18 throw Error('plotmodel error message: data provided is empty'); 19 19 } -
issm/trunk-jpl/src/m/solve/WriteData.js
r19791 r19793 172 172 var s=[data.length,1]; 173 173 if(IsArray(data[0]))s[1]=data[0].length; 174 if(typeof data == 'number'){s[0]=1; s[1]=1} 174 175 175 176 //if matrix = NaN, then do not write anything -
issm/trunk-jpl/src/m/solve/solve.js
r19780 r19793 107 107 108 108 //Write all input files 109 marshall(md); // bin file 110 ToolkitsFile(md.toolkits,md.miscellaneous.name + '.toolkits'); // toolkits file 111 cluster.BuildQueueScript(md.private.runtimename,md.miscellaneous.name,md.private.solution,md.settings.io_gather,md.debug.valgrind,md.debug.gprof,md.qmu.isdakota); // queue file 109 fid = marshall(md); // bin file 110 toolkitsstring= md.toolkits.ToolkitsFile(md.miscellaneous.name + '.toolkits'); // toolkits file 112 111 113 //Stop here if batch mode 114 if (options.getfieldvalue('batch','no') === 'yes'){ 115 if (md.verbose.solution){ 116 console.log('batch mode requested: not launching job interactively'); 117 console.log('launch solution sequence on remote cluster by hand'); 112 if (cluster.classname() != 'local'){ //{{{ 113 114 throw Error('non local clusters not supported yet!'); 115 116 cluster.BuildQueueScript(md.private.runtimename,md.miscellaneous.name,md.private.solution,md.settings.io_gather,md.debug.valgrind,md.debug.gprof,md.qmu.isdakota); // queue file 117 118 //Stop here if batch mode 119 if (options.getfieldvalue('batch','no') === 'yes'){ 120 if (md.verbose.solution){ 121 console.log('batch mode requested: not launching job interactively'); 122 console.log('launch solution sequence on remote cluster by hand'); 123 } 124 return; 118 125 } 119 return;120 }121 126 122 //Upload all required files123 modelname = md.miscellaneous.name;124 filelist = [modelname + '.bin ',modelname + '.toolkits '];125 if (ispc){126 filelist.push(modelname + '.bat ');127 }128 else{129 filelist.push(modelname + '.queue ');130 }127 //Upload all required files 128 modelname = md.miscellaneous.name; 129 filelist = [modelname + '.bin ',modelname + '.toolkits ']; 130 if (ispc){ 131 filelist.push(modelname + '.bat '); 132 } 133 else{ 134 filelist.push(modelname + '.queue '); 135 } 131 136 132 if (md.qmu.isdakota){133 filelist.push(modelname + '.qmu.in');134 }137 if (md.qmu.isdakota){ 138 filelist.push(modelname + '.qmu.in'); 139 } 135 140 136 if (restart == ''){137 cluster.UploadQueueJob(md.miscellaneous.name,md.private.runtimename,filelist);138 }141 if (restart == ''){ 142 cluster.UploadQueueJob(md.miscellaneous.name,md.private.runtimename,filelist); 143 } 139 144 140 //launch queue job:141 cluster.LaunchQueueJob(md.miscellaneous.name,md.private.runtimename,filelist,restart);145 //launch queue job: 146 cluster.LaunchQueueJob(md.miscellaneous.name,md.private.runtimename,filelist,restart); 142 147 143 //wait on lock 144 if (md.settings.waitonlock == 'NaN'){ 145 //load when user enters 'y' 146 console.log('solution launched on remote cluster. log in to detect job completion.'); 147 throw Error("solve error message: user detection of successfull completion of job not support yet!"); 148 /*choice=input('Is the job successfully completed? (y/n)','s'); 149 if ~strcmp(choice,'y'), 150 console.log('Results not loaded... exiting'); 151 else 152 md=loadresultsfromcluster(md); 153 end*/ 154 } 155 else if (md.settings.waitonlock>0){ 156 //we wait for the done file 157 done=waitonlock(md); 158 if (md.verbose.solution){ 159 console.log('loading results from cluster'); 148 //wait on lock 149 if (md.settings.waitonlock == 'NaN'){ 150 //load when user enters 'y' 151 console.log('solution launched on remote cluster. log in to detect job completion.'); 152 throw Error("solve error message: user detection of successfull completion of job not support yet!"); 153 /*choice=input('Is the job successfully completed? (y/n)','s'); 154 if ~strcmp(choice,'y'), 155 console.log('Results not loaded... exiting'); 156 else 157 md=loadresultsfromcluster(md); 158 end*/ 160 159 } 161 loadresultsfromcluster(md); 162 } 163 else if (md.settings.waitonlock==0){ 164 console.log('Model results must be loaded manually with md=loadresultsfromcluster(md);'); 165 } 160 else if (md.settings.waitonlock>0){ 161 //we wait for the done file 162 done=waitonlock(md); 163 if (md.verbose.solution){ 164 console.log('loading results from cluster'); 165 } 166 loadresultsfromcluster(md); 167 } 168 else if (md.settings.waitonlock==0){ 169 console.log('Model results must be loaded manually with md=loadresultsfromcluster(md);'); 170 } 166 171 167 //post processes qmu results if necessary 168 if (md.qmu.isdakota){ 169 /*if ~strncmpi(options.getfieldvalue('keep','y'),'y',1) 170 system(['rm -rf qmu' num2str(feature('GetPid'))]); 171 end*/ 172 //post processes qmu results if necessary 173 if (md.qmu.isdakota){ 174 /*if ~strncmpi(options.getfieldvalue('keep','y'),'y',1) 175 system(['rm -rf qmu' num2str(feature('GetPid'))]); 176 end*/ 177 } 178 } //}}} 179 else{ //if (cluster.classname() == 'local') 180 181 /*We are running locally on the machine, using the issm module:*/ 182 console.log('running issm locally'); 183 184 //Call issm: 185 issm(fid, toolkitsstring, solutionstring, md.miscellaneous.name); 172 186 } 173 187 } -
issm/trunk-jpl/src/wrappers/javascript/Makefile.am
r19787 r19793 14 14 ../IssmConfig/IssmConfig.js\ 15 15 ../EnumToString/EnumToString.js\ 16 ../StringToEnum/StringToEnum.js 16 ../StringToEnum/StringToEnum.js\ 17 ../Issm/issm.js 17 18 18 19 #javascript io{{{ … … 84 85 ../EnumToString/EnumToString.cpp\ 85 86 ../StringToEnum/StringToEnum.cpp\ 86 ../ ../c/main/issm.cpp87 ../Issm/issm.cpp 87 88 88 IssmModule_CXXFLAGS= -fPIC -D_DO_NOT_LOAD_GLOBALS_ --memory-init-file 0 $(AM_CXXFLAGS) $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS) -s EXPORTED_FUNCTIONS="['_TriMeshModule','_NodeConnectivityModule','_ElementConnectivityModule','_InterpFromMeshToMesh2dModule','_IssmConfigModule','_EnumToStringModule','_StringToEnumModule','_main']" -s DISABLE_EXCEPTION_CATCHING=0 -s ALLOW_MEMORY_GROWTH=189 IssmModule_LDADD = ${deps} $(TRIANGLELIB) 89 IssmModule_CXXFLAGS= -fPIC -D_DO_NOT_LOAD_GLOBALS_ --memory-init-file 0 $(AM_CXXFLAGS) $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS) -s EXPORTED_FUNCTIONS="['_TriMeshModule','_NodeConnectivityModule','_ElementConnectivityModule','_InterpFromMeshToMesh2dModule','_IssmConfigModule','_EnumToStringModule','_StringToEnumModule','_IssmModule']" -s DISABLE_EXCEPTION_CATCHING=0 -s ALLOW_MEMORY_GROWTH=1 -s INVOKE_RUN=0 90 IssmModule_LDADD = ${deps} $(TRIANGLELIB) $(GSLLIB) 90 91 #}}} -
issm/trunk-jpl/test/NightlyRun/test101.html
r19791 r19793 50 50 <script type="text/javascript" src="../../src/m/boundaryconditions/SetIceShelfBC.js"></script> 51 51 <script type="text/javascript" src="../../src/m/parameterization/setflowequation.js"></script> 52 <script type="text/javascript" src="../../src/m/classes/clusters/ generic.js"></script>52 <script type="text/javascript" src="../../src/m/classes/clusters/local.js"></script> 53 53 <script type="text/javascript" src="../../src/m/parameterization/setmask.js"></script> 54 54 <script type="text/javascript" src="../../src/m/consistency/ismodelselfconsistent.js"></script> … … 81 81 <script type="text/javascript" src="../../src/wrappers/ElementConnectivity/ElementConnectivity.js"></script> 82 82 <script type="text/javascript" src="../../src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.js"></script> 83 <script type="text/javascript" src="../../src/wrappers/Issm/issm.js"></script> 83 84 <script type="text/javascript" src="../../build-js/src/wrappers/javascript/IssmModule.js"></script> 84 <script type="text/javascript" src="../../src/c/main/issm.js"></script>85 85 <script type="text/javascript" src="../../externalpackages/javascript/src/sprintf.js"></script> 86 86 <script type="text/javascript" src="../../externalpackages/javascript/src/jquery.min.js"></script> … … 97 97 parameterize(md); 98 98 setflowequation(md,'SSA','all'); 99 md.verbose.solution=1; md.verbose.convergence=1; 99 100 md=solve(md,StressbalanceSolutionEnum(),'checkconsistency','no'); 100 101 101 /*plotmodel(md,'data',md.initialization.vel,'colorbar','on',' data',md.initialization.vx,102 'data',md.initialization.temperature, 'data',md.basalforcings.floatingice_melting_rate,'data','mesh'); 103 //var output=issm([5,1,1]); */102 /*plotmodel(md,'data',md.initialization.vel,'colorbar','on','colorbarheight',.5,'data',md.initialization.vx, 103 'data',md.initialization.temperature, 'data',md.basalforcings.floatingice_melting_rate,'data','mesh');*/ 104 //var output=issm([5,1,1]); 104 105 105 106 -
issm/trunk-jpl/test/Par/SquareShelfConstrained.par
r19751 r19793 11 11 md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness; 12 12 md.geometry.surface=md.geometry.base+md.geometry.thickness; 13 md.geometry.bed=md.geometry.base-10; 13 14 14 15 %Initial velocity
Note:
See TracChangeset
for help on using the changeset viewer.