Changeset 3086


Ignore:
Timestamp:
02/23/10 11:06:53 (15 years ago)
Author:
seroussi
Message:

added slopecompute solution in parallel

Location:
issm/trunk/src/c
Files:
2 added
18 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/EnumDefinitions/EnumDefinitions.cpp

    r2722 r3086  
    3434int TransientAnalysisEnum(void){            return          231; }
    3535//slope
    36 int SlopeComputeAnalysisEnum(void){         return          240; }
     36int SlopecomputeAnalysisEnum(void){         return          240; }
    3737int SurfaceXAnalysisEnum(void){             return          241; }
    3838int SurfaceYAnalysisEnum(void){             return          242; }
  • issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h

    r2722 r3086  
    3535int TransientAnalysisEnum(void);
    3636//slope
    37 int SlopeComputeAnalysisEnum(void);
     37int SlopecomputeAnalysisEnum(void);
    3838int SurfaceXAnalysisEnum(void);
    3939int SurfaceYAnalysisEnum(void);
  • issm/trunk/src/c/Makefile.am

    r3050 r3086  
    656656                                        ./parallel/balancedthickness_core.cpp\
    657657                                        ./parallel/balancedvelocities_core.cpp\
     658                                        ./parallel/slopecompute_core.cpp\
    658659                                        ./parallel/transient_core.cpp\
    659660                                        ./parallel/transient_core_2d.cpp\
     
    686687bin_PROGRAMS =
    687688else
    688 bin_PROGRAMS = diagnostic.exe thermal.exe prognostic.exe balancedthickness.exe balancedvelocities.exe transient.exe steadystate.exe
     689bin_PROGRAMS = diagnostic.exe thermal.exe prognostic.exe balancedthickness.exe balancedvelocities.exe transient.exe steadystate.exe slopecompute.exe
    689690endif
    690691
     
    709710balancedvelocities_exe_CXXFLAGS= -fPIC -D_PARALLEL_
    710711
     712slopecompute_exe_SOURCES = parallel/slopecompute.cpp
     713slopecompute_exe_CXXFLAGS= -fPIC -D_PARALLEL_
     714
    711715transient_exe_SOURCES = parallel/transient.cpp
    712716transient_exe_CXXFLAGS= -fPIC -D_PARALLEL_
  • issm/trunk/src/c/ModelProcessorx/CreateDataSets.cpp

    r2722 r3086  
    5656                }
    5757        }
    58         else if (iomodel->analysis_type==SlopeComputeAnalysisEnum()){
     58        else if (iomodel->analysis_type==SlopecomputeAnalysisEnum()){
    5959
    6060                CreateElementsNodesAndMaterialsSlopeCompute(pelements,pnodes,pmaterials, iomodel,iomodel_handle);
  • issm/trunk/src/c/objects/Penta.cpp

    r3041 r3086  
    313313                else throw ErrorException(__FUNCT__,exprintf("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet"));
    314314        }
    315         else if (analysis_type==SlopeComputeAnalysisEnum()){
     315        else if (analysis_type==SlopecomputeAnalysisEnum()){
    316316
    317317                CreateKMatrixSlopeCompute( Kgg,inputs,analysis_type,sub_analysis_type);
     
    14251425                else throw ErrorException(__FUNCT__,exprintf("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet"));
    14261426        }
    1427         else if (analysis_type==SlopeComputeAnalysisEnum()){
     1427        else if (analysis_type==SlopecomputeAnalysisEnum()){
    14281428
    14291429                CreatePVectorSlopeCompute( pg,inputs,analysis_type,sub_analysis_type);
  • issm/trunk/src/c/objects/Tria.cpp

    r3049 r3086  
    288288
    289289        }
    290         else if (analysis_type==SlopeComputeAnalysisEnum()){
     290        else if (analysis_type==SlopecomputeAnalysisEnum()){
    291291
    292292                CreateKMatrixSlopeCompute( Kgg,inputs,analysis_type,sub_analysis_type);
     
    17551755                else throw ErrorException(__FUNCT__,exprintf("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet"));
    17561756        }
    1757         else if (analysis_type==SlopeComputeAnalysisEnum()){
     1757        else if (analysis_type==SlopecomputeAnalysisEnum()){
    17581758               
    17591759                CreatePVectorSlopeCompute( pg,inputs,analysis_type,sub_analysis_type);
  • issm/trunk/src/c/parallel/ControlInitialization.cpp

    r2333 r3086  
    6767        fem_ds=model->GetFormulation(DiagnosticAnalysisEnum(),StokesAnalysisEnum());
    6868        fem_dhu=model->GetFormulation(DiagnosticAnalysisEnum(),HutterAnalysisEnum());
    69         fem_sl=model->GetFormulation(SlopeComputeAnalysisEnum());
     69        fem_sl=model->GetFormulation(SlopecomputeAnalysisEnum());
    7070
    7171        //specific parameters for specific models
     
    8484        //compute slopes
    8585        if(verbose)_printf_("%s\n","computing bed slope (x and y derivatives)...");
    86         diagnostic_core_linear(&slopex,fem_sl,inputs,SlopeComputeAnalysisEnum(),BedXAnalysisEnum());
    87         diagnostic_core_linear(&slopey,fem_sl,inputs,SlopeComputeAnalysisEnum(),BedYAnalysisEnum());
     86        diagnostic_core_linear(&slopex,fem_sl,inputs,SlopecomputeAnalysisEnum(),BedXAnalysisEnum());
     87        diagnostic_core_linear(&slopey,fem_sl,inputs,SlopecomputeAnalysisEnum(),BedYAnalysisEnum());
    8888        FieldExtrudex( slopex, fem_sl->elements,fem_sl->nodes,fem_sl->loads,fem_sl->materials,fem_sl->parameters,"slopex",0);
    8989        FieldExtrudex( slopey, fem_sl->elements,fem_sl->nodes,fem_sl->loads,fem_sl->materials,fem_sl->parameters,"slopey",0);
  • issm/trunk/src/c/parallel/ProcessResults.cpp

    r2892 r3086  
    7575        double* surface=NULL;
    7676
     77        Vec     sx_g=NULL;
     78        double* sx_g_serial=NULL;
     79        double* slopex=NULL;
     80
     81        Vec     sy_g=NULL;
     82        double* sy_g_serial=NULL;
     83        double* slopey=NULL;
     84
    7785        Vec     b_g=NULL;
    7886        double* b_g_serial=NULL;
     
    115123        fem_ds=model->GetFormulation(DiagnosticAnalysisEnum(),StokesAnalysisEnum());
    116124        fem_dhu=model->GetFormulation(DiagnosticAnalysisEnum(),HutterAnalysisEnum());
    117         fem_sl=model->GetFormulation(SlopeComputeAnalysisEnum());
     125        fem_sl=model->GetFormulation(SlopecomputeAnalysisEnum());
    118126        if(analysis_type==PrognosticAnalysisEnum()){
    119127                fem_p=model->GetFormulation(PrognosticAnalysisEnum());
     
    407415                        VecFree(&s_g);
    408416                }
     417                else if(strcmp(result->GetFieldName(),"sx_g")==0){
     418                        /*easy, s_g is of size numberofnodes, on 1 dof, just repartition: */
     419                        result->GetField(&sx_g);
     420                        VecToMPISerial(&sx_g_serial,sx_g);
     421                        fem_sl->parameters->FindParam(&numberofnodes,"numberofnodes");
     422                        VecToMPISerial(&partition,fem_sl->partition->vector);
     423
     424                        slopex=(double*)xmalloc(numberofnodes*sizeof(double));
     425
     426                        for(i=0;i<numberofnodes;i++){
     427                                slopex[i]=sx_g_serial[(int)partition[i]];
     428                        }
     429                       
     430                        /*Ok, add pressure to newresults: */
     431                        newresult=new Result(newresults->Size()+1,result->GetTime(),result->GetStep(),"slopex",slopex,numberofnodes);
     432                        newresults->AddObject(newresult);
     433
     434                        /*do some cleanup: */
     435                        xfree((void**)&sx_g_serial);
     436                        xfree((void**)&partition);
     437                        xfree((void**)&slopex);
     438                        VecFree(&sx_g);
     439                }
     440                else if(strcmp(result->GetFieldName(),"sy_g")==0){
     441                        /*easy, s_g is of size numberofnodes, on 1 dof, just repartition: */
     442                        result->GetField(&sy_g);
     443                        VecToMPISerial(&sy_g_serial,sy_g);
     444                        fem_sl->parameters->FindParam(&numberofnodes,"numberofnodes");
     445                        VecToMPISerial(&partition,fem_sl->partition->vector);
     446
     447                        slopey=(double*)xmalloc(numberofnodes*sizeof(double));
     448
     449                        for(i=0;i<numberofnodes;i++){
     450                                slopey[i]=sy_g_serial[(int)partition[i]];
     451                        }
     452                       
     453                        /*Ok, add pressure to newresults: */
     454                        newresult=new Result(newresults->Size()+1,result->GetTime(),result->GetStep(),"slopey",slopey,numberofnodes);
     455                        newresults->AddObject(newresult);
     456
     457                        /*do some cleanup: */
     458                        xfree((void**)&sy_g_serial);
     459                        xfree((void**)&partition);
     460                        xfree((void**)&slopey);
     461                        VecFree(&sy_g);
     462                }
    409463                else if(strcmp(result->GetFieldName(),"b_g")==0){
    410464                        /*easy, b_g is of size numberofnodes, on 1 dof, just repartition: */
  • issm/trunk/src/c/parallel/balancedthickness.cpp

    r2715 r3086  
    143143        delete processedresults;
    144144        delete results;
    145         delete model;
    146145        delete inputs;
    147146
  • issm/trunk/src/c/parallel/diagnostic.cpp

    r3044 r3086  
    9090       
    9191        _printf_("\n   reading surface and bed slope computation model data:\n");
    92         model->AddFormulation(fid,SlopeComputeAnalysisEnum());
     92        model->AddFormulation(fid,SlopecomputeAnalysisEnum());
    9393
    9494        /*get parameters: */
  • issm/trunk/src/c/parallel/diagnostic_core.cpp

    r2333 r3086  
    7777        fem_ds=model->GetFormulation(DiagnosticAnalysisEnum(),StokesAnalysisEnum());
    7878        fem_dhu=model->GetFormulation(DiagnosticAnalysisEnum(),HutterAnalysisEnum());
    79         fem_sl=model->GetFormulation(SlopeComputeAnalysisEnum());
     79        fem_sl=model->GetFormulation(SlopecomputeAnalysisEnum());
    8080
    8181        //specific parameters for specific models
     
    9393                       
    9494                if(verbose)_printf_("%s\n","computing surface slope (x and y derivatives)...");
    95                 diagnostic_core_linear(&slopex,fem_sl,inputs,SlopeComputeAnalysisEnum(),SurfaceXAnalysisEnum());
    96                 diagnostic_core_linear(&slopey,fem_sl,inputs,SlopeComputeAnalysisEnum(),SurfaceYAnalysisEnum());
     95                diagnostic_core_linear(&slopex,fem_sl,inputs,SlopecomputeAnalysisEnum(),SurfaceXAnalysisEnum());
     96                diagnostic_core_linear(&slopey,fem_sl,inputs,SlopecomputeAnalysisEnum(),SurfaceYAnalysisEnum());
    9797
    9898                if (dim==3){
     
    161161
    162162                        if(verbose)_printf_("%s\n","computing bed slope (x and y derivatives)...");
    163                         diagnostic_core_linear(&slopex,fem_sl,inputs,SlopeComputeAnalysisEnum(),BedXAnalysisEnum());
    164                         diagnostic_core_linear(&slopey,fem_sl,inputs,SlopeComputeAnalysisEnum(),BedYAnalysisEnum());
     163                        diagnostic_core_linear(&slopex,fem_sl,inputs,SlopecomputeAnalysisEnum(),BedXAnalysisEnum());
     164                        diagnostic_core_linear(&slopey,fem_sl,inputs,SlopecomputeAnalysisEnum(),BedYAnalysisEnum());
    165165                        FieldExtrudex( slopex, fem_sl->elements,fem_sl->nodes,fem_sl->loads,fem_sl->materials,fem_sl->parameters,"slopex",0);
    166166                        FieldExtrudex( slopey, fem_sl->elements,fem_sl->nodes,fem_sl->loads,fem_sl->materials,fem_sl->parameters,"slopey",0);
  • issm/trunk/src/c/parallel/parallel.h

    r2722 r3086  
    1919void balancedthickness_core(DataSet* results,Model* model, ParameterInputs* inputs);
    2020void balancedvelocities_core(DataSet* results,Model* model, ParameterInputs* inputs);
     21void slopecompute_core(DataSet* results,Model* model, ParameterInputs* inputs);
    2122void control_core(DataSet* results,Model* model, ParameterInputs* inputs);
    2223
  • issm/trunk/src/c/parallel/steadystate.cpp

    r2586 r3086  
    9393       
    9494        _printf_("\n   reading surface and bed slope computation model data:\n");
    95         model->AddFormulation(fid,SlopeComputeAnalysisEnum());
     95        model->AddFormulation(fid,SlopecomputeAnalysisEnum());
    9696
    9797        _printf_("\n   read and create thermal finite element model:\n");
  • issm/trunk/src/c/parallel/steadystate_core.cpp

    r2333 r3086  
    5858        fem_ds=model->GetFormulation(DiagnosticAnalysisEnum(),StokesAnalysisEnum());
    5959        fem_dhu=model->GetFormulation(DiagnosticAnalysisEnum(),HutterAnalysisEnum());
    60         fem_sl=model->GetFormulation(SlopeComputeAnalysisEnum());
     60        fem_sl=model->GetFormulation(SlopecomputeAnalysisEnum());
    6161        fem_t=model->GetFormulation(ThermalAnalysisEnum());
    6262        fem_m=model->GetFormulation(MeltingAnalysisEnum());
  • issm/trunk/src/c/parallel/transient.cpp

    r2629 r3086  
    9191       
    9292        _printf_("\n   reading surface and bed slope computation model data:\n");
    93         model->AddFormulation(fid,SlopeComputeAnalysisEnum());
     93        model->AddFormulation(fid,SlopecomputeAnalysisEnum());
    9494
    9595        _printf_("\n   reading prognositc model data:\n");
  • issm/trunk/src/c/parallel/transient_core_2d.cpp

    r2333 r3086  
    7070        fem_ds=model->GetFormulation(DiagnosticAnalysisEnum(),StokesAnalysisEnum());
    7171        fem_dhu=model->GetFormulation(DiagnosticAnalysisEnum(),HutterAnalysisEnum());
    72         fem_sl=model->GetFormulation(SlopeComputeAnalysisEnum());
     72        fem_sl=model->GetFormulation(SlopecomputeAnalysisEnum());
    7373        fem_p=model->GetFormulation(PrognosticAnalysisEnum());
    7474
  • issm/trunk/src/c/parallel/transient_core_3d.cpp

    r2333 r3086  
    7474        fem_ds=model->GetFormulation(DiagnosticAnalysisEnum(),StokesAnalysisEnum());
    7575        fem_dhu=model->GetFormulation(DiagnosticAnalysisEnum(),HutterAnalysisEnum());
    76         fem_sl=model->GetFormulation(SlopeComputeAnalysisEnum());
     76        fem_sl=model->GetFormulation(SlopecomputeAnalysisEnum());
    7777        fem_p=model->GetFormulation(PrognosticAnalysisEnum());
    7878        fem_t=model->GetFormulation(ThermalAnalysisEnum());
  • issm/trunk/src/c/shared/Dofs/DistributeNumDofs.cpp

    r2722 r3086  
    4444                }
    4545        }
    46         else if (analysis_type==SlopeComputeAnalysisEnum()){
     46        else if (analysis_type==SlopecomputeAnalysisEnum()){
    4747                numdofs=1;
    4848        }
Note: See TracChangeset for help on using the changeset viewer.