Changeset 137


Ignore:
Timestamp:
04/29/09 15:41:31 (16 years ago)
Author:
Eric.Larour
Message:

Input updates are more exhaustive

Location:
issm/trunk/src
Files:
7 edited

Legend:

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

    r8 r137  
    2525        elements->Configure(elements,loads, nodes, materials);
    2626        loads->Configure(elements, loads, nodes, materials);
     27        nodes->Configure(elements, loads, nodes, materials);
    2728       
    28         /*Update elements, loads and materials from inputs: */
     29        /*Update elements, nodes, loads and materials from inputs: */
    2930        elements->UpdateFromInputs(inputs);
     31        nodes->UpdateFromInputs(inputs);
    3032        loads->UpdateFromInputs(inputs);
    3133        materials->UpdateFromInputs(inputs);
    32         nodes->UpdateFromInputs(inputs);
    3334
    3435        return noerr;
  • issm/trunk/src/c/objects/Icefront.cpp

    r93 r137  
    550550#define __FUNCT__ "Icefront::UpdateFromInputs"
    551551void  Icefront::UpdateFromInputs(ParameterInputs* inputs){
    552        
     552
     553        int i;
     554        int doflist0[MAXDOFSPERNODE];
     555        int doflist1[MAXDOFSPERNODE];
     556        int doflist2[MAXDOFSPERNODE];
     557        int doflist3[MAXDOFSPERNODE];
     558        int numberofdofspernode;
     559
     560        /*element: */
     561        double* h_param=NULL;
     562        double* b_param=NULL;
     563       
     564        /*Get dof list: */
     565        nodes[0]->GetDofList(&doflist0[0],&numberofdofspernode);
     566        nodes[1]->GetDofList(&doflist1[0],&numberofdofspernode);
     567        if(strcmp(type,"quad")){
     568                nodes[2]->GetDofList(&doflist2[0],&numberofdofspernode);
     569                nodes[3]->GetDofList(&doflist3[0],&numberofdofspernode);
     570        }
     571
     572        /*Update internal data if inputs holds new values: */
     573        h_param=ParameterInputsRecover(inputs,"thickness");
     574        b_param=ParameterInputsRecover(inputs,"bed");
     575
     576        if(h_param){
     577                h[0]=h_param[doflist0[0]];
     578                h[1]=h_param[doflist1[0]];
     579                if(strcmp(type,"quad")){
     580                        h[2]=h_param[doflist2[0]];
     581                        h[3]=h_param[doflist3[0]];
     582                }
     583        }
     584       
     585        if(b_param){
     586                b[0]=b_param[doflist0[0]];
     587                b[1]=b_param[doflist1[0]];
     588                if(strcmp(type,"quad")){
     589                        b[2]=b_param[doflist2[0]];
     590                        b[3]=b_param[doflist3[0]];
     591                }
     592        }
     593
    553594}
    554595
  • issm/trunk/src/c/objects/Node.cpp

    r95 r137  
    434434void  Node::UpdateFromInputs(ParameterInputs* inputs){
    435435       
    436         //throw ErrorException(__FUNCT__," not supported yet!");
     436        int doflist[MAXDOFSPERNODE*3];
     437        int numberofdofspernode;
     438
     439        /*element: */
     440        double* x_param=NULL;
     441        double* y_param=NULL;
     442        double* z_param=NULL;
     443
     444        /*Get dof list: */
     445        GetDofList(&doflist[0],&numberofdofspernode);
     446
     447        /*Update internal data if inputs holds new values: */
     448        x_param=ParameterInputsRecover(inputs,"x");
     449        y_param=ParameterInputsRecover(inputs,"y");
     450        z_param=ParameterInputsRecover(inputs,"z");
     451
     452        if(x_param)x[0]=x_param[doflist[0]];
     453        if(y_param)x[1]=y_param[doflist[0]];
     454        if(y_param)x[2]=z_param[doflist[0]];
    437455
    438456}
  • issm/trunk/src/c/objects/Penta.cpp

    r128 r137  
    716716        int numberofdofspernode;
    717717
    718         double* thickness=NULL;
    719         double* bed=NULL;
    720         double* surface=NULL;
    721         double* drag=NULL;
     718        /*element: */
     719        double* h_param=NULL;
     720        double* s_param=NULL;
     721        double* b_param=NULL;
     722        double* k_param=NULL;
     723        double* melting_param=NULL;
     724        double* accumulation_param=NULL;
     725       
     726        /*material: */
    722727        double* temperature_average_param=NULL;
    723         double* flow_law_param=NULL;
    724         double temperature_average;
    725         double B_average;
    726 
     728        double  temperature_average;
     729        double* B_param=NULL;
     730        double  B_average;
    727731
    728732
     
    731735
    732736        /*Update internal data if inputs holds new values: */
    733         thickness=ParameterInputsRecover(inputs,"thickness");
    734         bed=ParameterInputsRecover(inputs,"bed");
    735         surface=ParameterInputsRecover(inputs,"surface");
    736         drag=ParameterInputsRecover(inputs,"drag");
    737 
    738         for(i=0;i<5;i++){
    739                 if(thickness)h[i]=thickness[doflist[i*numberofdofspernode+0]];
    740                 if(bed)b[i]=bed[doflist[i*numberofdofspernode+0]];
    741                 if(surface)s[i]=surface[doflist[i*numberofdofspernode+0]];
    742                 if(drag)k[i]=drag[doflist[i*numberofdofspernode+0]];
     737        h_param=ParameterInputsRecover(inputs,"thickness");
     738        s_param=ParameterInputsRecover(inputs,"surface");
     739        b_param=ParameterInputsRecover(inputs,"bed");
     740        k_param=ParameterInputsRecover(inputs,"drag");
     741        melting_param=ParameterInputsRecover(inputs,"melting");
     742        accumulation_param=ParameterInputsRecover(inputs,"accumulation");
     743
     744        for(i=0;i<6;i++){
     745                if(h_param)h[i]=h_param[doflist[i*numberofdofspernode+0]];
     746                if(s_param)s[i]=s_param[doflist[i*numberofdofspernode+0]];
     747                if(b_param)b[i]=b_param[doflist[i*numberofdofspernode+0]];
     748                if(k_param)k[i]=k_param[doflist[i*numberofdofspernode+0]];
     749                if(melting_param)melting[i]=melting_param[doflist[i*numberofdofspernode+0]];
     750                if(accumulation_param)accumulation[i]=accumulation_param[doflist[i*numberofdofspernode+0]];
    743751        }
    744752
    745753        //Update material if necessary
    746754        temperature_average_param=ParameterInputsRecover(inputs,"temperature_average");
    747         flow_law_param=ParameterInputsRecover(inputs,"B");
     755        B_param=ParameterInputsRecover(inputs,"B");
    748756        if(temperature_average_param){
    749                 for(i=0;i<3;i++) temperature_average+=temperature_average_param[doflist[i*numberofdofspernode+0]];
    750                 temperature_average=temperature_average/3.0;
     757                for(i=0;i<6;i++) temperature_average+=temperature_average_param[doflist[i*numberofdofspernode+0]];
     758                temperature_average=temperature_average/6.0;
    751759                B_average=Paterson(temperature_average);
    752760                matice->SetB(B_average);
    753761        }
    754762
    755         //Update material if B is provided.
    756         if(flow_law_param){
    757                 for(i=0;i<3;i++) B_average+=flow_law_param[doflist[i*numberofdofspernode+0]];
    758                 B_average=B_average/3.0;
     763        if(B_param){
     764                for(i=0;i<6;i++) B_average+=B_param[doflist[i*numberofdofspernode+0]];
     765                B_average=B_average/6.0;
    759766                matice->SetB(B_average);
    760767        }
    761768
    762769}
    763                
     770
    764771Matpar* Penta::GetMatPar(){
    765772        return matpar;
  • issm/trunk/src/c/objects/Tria.cpp

    r128 r137  
    883883        int numberofdofspernode;
    884884
    885         double* thickness=NULL;
    886         double* bed=NULL;
    887         double* surface=NULL;
    888         double* drag=NULL;
     885        /*element: */
     886        double* h_param=NULL;
     887        double* s_param=NULL;
     888        double* b_param=NULL;
     889        double* k_param=NULL;
     890        double* melting_param=NULL;
     891        double* accumulation_param=NULL;
     892       
     893        /*material: */
    889894        double* temperature_average_param=NULL;
    890         double* flow_law_param=NULL;
    891         double temperature_average;
    892         double B_average;
    893 
     895        double  temperature_average;
     896        double* B_param=NULL;
     897        double  B_average;
    894898
    895899
     
    898902
    899903        /*Update internal data if inputs holds new values: */
    900         thickness=ParameterInputsRecover(inputs,"thickness");
    901         bed=ParameterInputsRecover(inputs,"bed");
    902         surface=ParameterInputsRecover(inputs,"surface");
    903         drag=ParameterInputsRecover(inputs,"drag");
     904        h_param=ParameterInputsRecover(inputs,"thickness");
     905        s_param=ParameterInputsRecover(inputs,"surface");
     906        b_param=ParameterInputsRecover(inputs,"bed");
     907        k_param=ParameterInputsRecover(inputs,"drag");
     908        melting_param=ParameterInputsRecover(inputs,"melting");
     909        accumulation_param=ParameterInputsRecover(inputs,"accumulation");
    904910
    905911        for(i=0;i<3;i++){
    906                 if(thickness)h[i]=thickness[doflist[i*numberofdofspernode+0]];
    907                 if(bed)b[i]=bed[doflist[i*numberofdofspernode+0]];
    908                 if(surface)s[i]=surface[doflist[i*numberofdofspernode+0]];
    909                 if(drag)k[i]=drag[doflist[i*numberofdofspernode+0]];
     912                if(h_param)h[i]=h_param[doflist[i*numberofdofspernode+0]];
     913                if(s_param)s[i]=s_param[doflist[i*numberofdofspernode+0]];
     914                if(b_param)b[i]=b_param[doflist[i*numberofdofspernode+0]];
     915                if(k_param)k[i]=k_param[doflist[i*numberofdofspernode+0]];
     916                if(melting_param)melting[i]=melting_param[doflist[i*numberofdofspernode+0]];
     917                if(accumulation_param)accumulation[i]=accumulation_param[doflist[i*numberofdofspernode+0]];
    910918        }
    911919
    912920        //Update material if necessary
    913921        temperature_average_param=ParameterInputsRecover(inputs,"temperature_average");
    914         flow_law_param=ParameterInputsRecover(inputs,"B");
     922        B_param=ParameterInputsRecover(inputs,"B");
    915923        if(temperature_average_param){
    916924                for(i=0;i<3;i++) temperature_average+=temperature_average_param[doflist[i*numberofdofspernode+0]];
     
    920928        }
    921929
    922         //Update material if B is provided.
    923         if(flow_law_param){
    924                 for(i=0;i<3;i++) B_average+=flow_law_param[doflist[i*numberofdofspernode+0]];
     930        if(B_param){
     931                for(i=0;i<3;i++) B_average+=B_param[doflist[i*numberofdofspernode+0]];
    925932                B_average=B_average/3.0;
    926933                matice->SetB(B_average);
  • issm/trunk/src/m/solutions/cielo/control.m

    r8 r137  
    2929                eval(['inputs.' m.parameters.control_type '=p_g;']);
    3030                inputs.fit=m.parameters.fit(n);
     31
     32                %Update inputs in datasets
     33                [m.elements,m.nodes, loads,m.materials]=UpdateFromInputs(m.elements,m.nodes, loads,m.materials,inputs);
    3134
    3235                disp('      computing gradJ...');
  • issm/trunk/src/m/solutions/cielo/diagnostic_core_linear.m

    r128 r137  
    77        %stiffness and load generation only:
    88        m.parameters.kflag=1; m.parameters.pflag=1;
     9
     10        %Update inputs in datasets
     11        [m.elements,m.nodes, m.loads,m.materials]=UpdateFromInputs(m.elements,m.nodes, m.loads,m.materials,inputs);
    912
    1013        %system matrices
Note: See TracChangeset for help on using the changeset viewer.