Changeset 22827


Ignore:
Timestamp:
06/05/18 09:53:08 (7 years ago)
Author:
erobo
Message:

FIX: change to fix gradient indexing problems

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/cores/controlm1qn3_core.cpp

    r22445 r22827  
    8888        G = xNew<double>(n);
    8989
     90        for(int i=0;i<intn;i++)_printf_(X[i]<<"\n");
    9091        /*Scale control for M1QN3*/
    91         for(int i=0;i<numberofvertices;i++){
    92                 for(int c=0;c<num_controls;c++){
    93                         int index = num_controls*i+c;
     92        for(int c=0;c<num_controls;c++){
     93                for(int i=0;i<numberofvertices;i++){
     94                        int index = numberofvertices*c+i;
     95                        _printf_("Before "<<X[index]<<"\n");
    9496                        X[index] = X[index]/scaling_factors[c];
     97                        _printf_("After "<<X[index]<<"\n");
    9598                }
    9699        }
     
    144147        GetVectorFromControlInputsx(&XL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"lowerbound");
    145148        GetVectorFromControlInputsx(&XU,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"upperbound");
    146         for(int i=0;i<numberofvertices;i++){
    147                 for(int c=0;c<num_controls;c++){
    148                         int index = num_controls*i+c;
     149        for(int c=0;c<num_controls;c++){
     150                for(int i=0;i<numberofvertices;i++){
     151                        int index = numberofvertices*c+i;
    149152                        X[index] = X[index]*scaling_factors[c];
    150153                        if(X[index]>XU[index]) X[index]=XU[index];
     
    200203        GetVectorFromControlInputsx(&XL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"lowerbound");
    201204        GetVectorFromControlInputsx(&XU,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"upperbound");
    202         for(int i=0;i<numberofvertices;i++){
    203                 for(int c=0;c<num_controls;c++){
    204                         int index = num_controls*i+c;
     205        for(int c=0;c<num_controls;c++){
     206                for(int i=0;i<numberofvertices;i++){
     207                        int index = numberofvertices*c+i;
    205208                        X[index] = X[index]*scaling_factors[c];
    206209                        if(X[index]>XU[index]) X[index]=XU[index];
     
    256259        /*Constrain Gradient*/
    257260        IssmDouble  Gnorm = 0.;
    258         for(int i=0;i<numberofvertices;i++){
    259                 for(int c=0;c<num_controls;c++){
    260                         int index = num_controls*i+c;
     261        for(int c=0;c<num_controls;c++){
     262                for(int i=0;i<numberofvertices;i++){
     263                        int index = numberofvertices*c+i;
    261264                        if(X[index]>=XU[index]) G[index]=0.;
    262265                        if(X[index]<=XL[index]) G[index]=0.;
Note: See TracChangeset for help on using the changeset viewer.