Ignore:
Timestamp:
06/30/09 13:49:49 (16 years ago)
Author:
Mathieu Morlighem
Message:

moved u_g to inputs in control methods

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/objects/Tria.cpp

    r1184 r1185  
    20072007#undef __FUNCT__
    20082008#define __FUNCT__ "Tria::Du"
    2009 void Tria::Du(Vec du_g,double* velocity,void* vinputs,int analysis_type,int sub_analysis_type){
     2009void Tria::Du(Vec du_g,void* vinputs,int analysis_type,int sub_analysis_type){
    20102010
    20112011        int i;
     
    20802080                throw ErrorException(__FUNCT__,"missing velocity_obs input parameter");
    20812081        }
     2082        if(!inputs->Recover("velocity",&vxvy_list[0][0],2,dofs2,numgrids,(void**)nodes)){
     2083                throw ErrorException(__FUNCT__,"missing velocity input parameter");
     2084        }
    20822085
    20832086        for(i=0;i<numgrids;i++){
    20842087                obs_vx_list[i]=obs_vxvy_list[i][0];
    20852088                obs_vy_list[i]=obs_vxvy_list[i][1];
    2086         }
    2087 
    2088         /*Initialize velocities: */
    2089         for(i=0;i<numgrids;i++){
    2090                 vx_list[i]=velocity[doflist[i*numberofdofspernode+0]];
    2091                 vy_list[i]=velocity[doflist[i*numberofdofspernode+1]];
    2092                 //obs_vx_list[i]=obs_velocity[doflist[i*numberofdofspernode+0]];
    2093                 //obs_vy_list[i]=obs_velocity[doflist[i*numberofdofspernode+1]];
     2089                vx_list[i]=vxvy_list[i][0];
     2090                vy_list[i]=vxvy_list[i][1];
    20942091        }
    20952092
     
    22202217#undef __FUNCT__
    22212218#define __FUNCT__ "Tria::Gradj"
    2222 void  Tria::Gradj(Vec grad_g,double* velocity,double* adjoint,void* inputs,int analysis_type,int sub_analysis_type,char* control_type){
     2219void  Tria::Gradj(Vec grad_g,double* adjoint,void* inputs,int analysis_type,int sub_analysis_type,char* control_type){
    22232220
    22242221        if (strcmp(control_type,"drag")==0){
    2225                 GradjDrag( grad_g,velocity,adjoint,inputs,analysis_type,sub_analysis_type);
     2222                GradjDrag( grad_g,adjoint,inputs,analysis_type,sub_analysis_type);
    22262223        }
    22272224        else if (strcmp(control_type,"B")==0){
    2228                 GradjB( grad_g, velocity, adjoint, inputs,analysis_type,sub_analysis_type);
     2225                GradjB( grad_g,adjoint,inputs,analysis_type,sub_analysis_type);
    22292226        }
    22302227        else throw ErrorException(__FUNCT__,exprintf("%s%s","control type not supported yet: ",control_type));
     
    22332230#undef __FUNCT__
    22342231#define __FUNCT__ "Tria::GradjDrag"
    2235 void  Tria::GradjDrag(Vec grad_g,double* velocity,double* adjoint,void* vinputs,int analysis_type,int sub_analysis_type){
     2232void  Tria::GradjDrag(Vec grad_g,double* adjoint,void* vinputs,int analysis_type,int sub_analysis_type){
    22362233
    22372234
     
    22532250        double adjx_list[numgrids];
    22542251        double adjy_list[numgrids];
     2252        double adjxadjy_list[numgrids][2];
    22552253
    22562254        double drag;
    2257         int    dofs[1]={0};
     2255        int    dofs1[1]={0};
     2256        int    dofs2[2]={0,1};
    22582257
    22592258        /* gaussian points: */
     
    22812280        double alpha_complement;
    22822281
    2283 
    22842282        /*element vector at the gaussian points: */
    22852283        double  grade_g[numgrids];
     
    23092307
    23102308        /* recover input parameters: */
    2311         inputs->Recover("drag",&k[0],1,dofs,numgrids,(void**)nodes);
    2312         inputs->Recover("bed",&b[0],1,dofs,numgrids,(void**)nodes);
    2313         inputs->Recover("thickness",&h[0],1,dofs,numgrids,(void**)nodes);
     2309        inputs->Recover("drag",&k[0],1,dofs1,numgrids,(void**)nodes);
     2310        inputs->Recover("bed",&b[0],1,dofs1,numgrids,(void**)nodes);
     2311        inputs->Recover("thickness",&h[0],1,dofs1,numgrids,(void**)nodes);
     2312        if(!inputs->Recover("velocity",&vxvy_list[0][0],2,dofs2,numgrids,(void**)nodes)){
     2313                throw ErrorException(__FUNCT__,"missing velocity input parameter");
     2314        }
     2315
     2316        for(i=0;i<numgrids;i++){
     2317                vx_list[i]=vxvy_list[i][0];
     2318                vy_list[i]=vxvy_list[i][1];
     2319        }
    23142320
    23152321        /*Initialize parameter lists: */
    23162322        for(i=0;i<numgrids;i++){
    2317                 vx_list[i]=velocity[doflist[i*numberofdofspernode+0]];
    2318                 vy_list[i]=velocity[doflist[i*numberofdofspernode+1]];
    2319                 vxvy_list[i][0]=vx_list[i];
    2320                 vxvy_list[i][1]=vy_list[i];
     2323                //vx_list[i]=velocity[doflist[i*numberofdofspernode+0]];
     2324                //vy_list[i]=velocity[doflist[i*numberofdofspernode+1]];
     2325                //vxvy_list[i][0]=vx_list[i];
     2326                //vxvy_list[i][1]=vy_list[i];
    23212327                adjx_list[i]=adjoint[doflist[i*numberofdofspernode+0]];
    23222328                adjy_list[i]=adjoint[doflist[i*numberofdofspernode+1]];
     
    24292435#undef __FUNCT__
    24302436#define __FUNCT__ "Tria::GradjB"
    2431 void  Tria::GradjB(Vec grad_g,double* velocity,double* adjoint,void* vinputs,int analysis_type,int sub_analysis_type){
     2437void  Tria::GradjB(Vec grad_g,double* adjoint,void* vinputs,int analysis_type,int sub_analysis_type){
    24322438
    24332439        int i;
     
    24492455        double adjx_list[numgrids];
    24502456        double adjy_list[numgrids];
     2457        double adjxadjy_list[numgrids][2];
     2458
     2459        int    dofs1[1]={0};
     2460        int    dofs2[2]={0,1};
    24512461
    24522462        /* gaussian points: */
     
    24712481        /* strain rate: */
    24722482        double epsilon[3]; /* epsilon=[exx,eyy,exy];*/
    2473 
    24742483
    24752484        /* parameters: */
     
    24992508        /* recover input parameters: */
    25002509        inputs->Recover("thickness",&h[0],1,dofs,numgrids,(void**)nodes);
     2510        if(!inputs->Recover("velocity",&vxvy_list[0][0],2,dofs2,numgrids,(void**)nodes)){
     2511                throw ErrorException(__FUNCT__,"missing velocity input parameter");
     2512        }
     2513
     2514        for(i=0;i<numgrids;i++){
     2515                vx_list[i]=vxvy_list[i][0];
     2516                vy_list[i]=vxvy_list[i][1];
     2517        }
    25012518
    25022519        /*Initialize parameter lists: */
    25032520        for(i=0;i<numgrids;i++){
    2504                 vx_list[i]=velocity[doflist[i*numberofdofspernode+0]];
    2505                 vy_list[i]=velocity[doflist[i*numberofdofspernode+1]];
    2506                 vxvy_list[i][0]=vx_list[i];
    2507                 vxvy_list[i][1]=vy_list[i];
     2521                //vx_list[i]=velocity[doflist[i*numberofdofspernode+0]];
     2522                //vy_list[i]=velocity[doflist[i*numberofdofspernode+1]];
     2523                //vxvy_list[i][0]=vx_list[i];
     2524                //vxvy_list[i][1]=vy_list[i];
    25082525                adjx_list[i]=adjoint[doflist[i*numberofdofspernode+0]];
    25092526                adjy_list[i]=adjoint[doflist[i*numberofdofspernode+1]];
     
    25722589#undef __FUNCT__
    25732590#define __FUNCT__ "Tria::Misfit"
    2574 double Tria::Misfit(double* velocity,void* vinputs,int analysis_type,int sub_analysis_type){
     2591double Tria::Misfit(void* vinputs,int analysis_type,int sub_analysis_type){
    25752592
    25762593        int i;
     
    26342651                throw ErrorException(__FUNCT__,"missing velocity_obs input parameter");
    26352652        }
    2636 
     2653        if(!inputs->Recover("velocity",&vxvy_list[0][0],2,dofs2,numgrids,(void**)nodes)){
     2654                throw ErrorException(__FUNCT__,"missing velocity input parameter");
     2655        }
     2656
     2657        /*Initialize velocities: */
    26372658        for(i=0;i<numgrids;i++){
    26382659                obs_vx_list[i]=obs_vxvy_list[i][0];
    26392660                obs_vy_list[i]=obs_vxvy_list[i][1];
    2640         }
    2641 
    2642         /*Initialize velocities: */
    2643         for(i=0;i<numgrids;i++){
    2644                 vx_list[i]=velocity[doflist[i*numberofdofspernode+0]];
    2645                 vy_list[i]=velocity[doflist[i*numberofdofspernode+1]];
    2646         }
    2647        
     2661                vx_list[i]=vxvy_list[i][0];
     2662                vy_list[i]=vxvy_list[i][1];
     2663        }
     2664
    26482665        /*Compute Misfit at the 3 nodes (integration of the linearized function)*/
    26492666        if(fit==0){
Note: See TracChangeset for help on using the changeset viewer.