Ignore:
Timestamp:
02/03/12 07:55:52 (13 years ago)
Author:
Mathieu Morlighem
Message:

Objective function gradient is now ONE unique vector

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/modules/ControlInputScaleGradientx/ControlInputScaleGradientx.cpp

    r7177 r11313  
    99#include "../../EnumDefinitions/EnumDefinitions.h"
    1010
    11 void ControlInputScaleGradientx(Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters, int name,double scale){
     11void ControlInputScaleGradientx(Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,double* norm_list,int step){
    1212
    13         for(int i=0;i<elements->Size();i++){
    14                 Element* element=(Element*)elements->GetObjectByOffset(i);
    15                 element->ControlInputScaleGradient(name,scale);
     13        /*Intermediaries*/
     14        int     i,j,num_controls;
     15        int    *control_type = NULL;
     16        double *scalar_list = NULL;
     17        double  scalar;
     18
     19
     20        /*Retrieve some parameters*/
     21        parameters->FindParam(&num_controls,InversionNumControlParametersEnum);
     22        parameters->FindParam(&control_type,NULL,InversionControlParametersEnum);
     23        parameters->FindParam(&scalar_list,NULL,NULL,InversionGradientScalingEnum);
     24
     25        /*Compute scaling factor*/
     26        scalar=scalar_list[0]/norm_list[0];
     27        for(i=0;i<num_controls;i++){
     28                scalar=min(scalar,scalar_list[num_controls*step+i]/norm_list[i]);
    1629        }
    1730
     31        for(i=0;i<num_controls;i++){
     32                for(j=0;j<elements->Size();j++){
     33                        Element* element=(Element*)elements->GetObjectByOffset(j);
     34                        element->ControlInputScaleGradient(control_type[i],scalar);
     35                }
     36        }
     37
     38        /*Clean up and return*/
     39        xfree((void**)&control_type);
     40        xfree((void**)&scalar_list);
    1841}
Note: See TracChangeset for help on using the changeset viewer.