Example 727: Parameter estimation by minimising error of projections of data points scanned from actual deformed surface onto predicted deformed surface

This example estimates a neo-hookian parameter by minimising the error of projections of deformed surface data points on predicted deformed surfaces of a cantilever beam


The comfile run by this example is as follows:


#If the example path is not set, default to current directory
if(!defined $example) {
   $example = "";
}
#Drop off the trailing / in the example path
$chopped = chop $example;
if($chopped ne "/"){
  $example = $chopped;
}

#We set up the geometry, initial conditions and load up the deformed surface data markers the first time when $OPTI is not equal to one
if ($OPTI ne 1) {
	fem def para;r;memory;example
	fem def coor 3,1	
	fem def base;r;TriLinear;example
	fem def;add base;r;BiLinear;example
	fem def;add base;r;ConstPress;example

	fem def node;r;cube;example
	fem def elem;r;cube;example
	fem def fibre;r;cube;example
	fem def elem;r;cube;example fibre
	fem def equa;r;mechanics;example
	fem def mate;r;mooney_rivlin;example
	fem group node 1,6,11,16 as BACKNODES
	fem def init;r;gravity;example
	fem def solve;r;newton;example
	#read in deformed synthetic surface data
	fem def data;r;cubedata_def;example
######################################################################################################################
	#Need to project data points onto a predicted deformed surface (fem def init puts undef with bcs into deformed variables memory space)
	#for optimiser to know information about number of data point residuals etc to start optimising.
	#This can be fixed in cmiss code. Has been fixed in my local version so that I don't need to do this command here. Will commit when 
	#I have completed code to optimise for undeformed state.

	fem def xi;c closest_face external deform
	fem list data error deform
	#read in the ipopti file
######################################################################################################################
#Some info on the ipopti prompts
#make sure that the derivative level is set to -1. -1 means that we are going to use first derivatives for the perturbation
#The step limit says that this is the max step that will be taken from the current material param value in the direction
#the line search has found to be the next step to minimise the residuals.
#The difference interval is the amount of perturbation that will be made to calculate the derivative at the current point in
#the optimisation space.
######################################################################################################################
# This >>symlink<< is set to current directory that full path doesn't need 
# to be specified in MaterialParameterOptimisation.ipopti
# For further information of symling have a look under
# >> perldoc -f symlink <<

symlink "$example/example_727.com","example_727.com"

	fem def optimise;r;undef;example
	$OPTI = 1;
	optimise;
} else {
#once the optimise file has been read in. we repeatedly solve the forward problem for each time we peturb the material parameters.
#In this case, the neo-Hookean param in the ipmate file. 
	fem def init;r;gravity;example
	fem def solve;r;newton;example
	fem solve inc 1.0 iter 20
	fem def xi;c closest_face external deform #note! the code does not work with qualifier deformed. Only deform should be used
	fem list data error deformed #remember that you can speed up optimisation by getting rid of this command in optimisation loop.
	#evaluate residuals 
	fem evaluate resid wrt data_fitting function deformed
}

Additional testing commands:

fem def optimise;w;cmiss_test

Files used by this example are:

Name                  Modified     Size

example_727.com 02-Apr-2005 3.2k BiLinear.ipbase 01-Apr-2005 1.1k ConstPress.ipbase 01-Apr-2005 1.1k TriLinear.ipbase 01-Apr-2005 1.4k cube.ipelem 01-Apr-2005 1.5k cube.ipelfb 01-Apr-2005 1.1k cube.ipfibr 01-Apr-2005 4.1k cube.ipmesh 01-Apr-2005 1.0k cube.ipnode 01-Apr-2005 4.7k cube_def.ipnode 01-Apr-2005 4.8k cubedata_def.ipdata 01-Apr-2005 179k gravity.ipinit 01-Apr-2005 1.3k mechanics.ipequa 01-Apr-2005 2.0k memory.ippara 01-Apr-2005 5.9k mooney_rivlin.ipmate 01-Apr-2005 2.2k newton.ipsolv 16-Aug-2010 2.2k newton.ipsolv.old 13-Apr-2007 2.0k test_output.com 01-Apr-2005 30 undef.ipopti 01-Apr-2005 1.2k view.com 01-Apr-2005 153

Download the entire example:

Name                      Modified     Size

examples_7_72_727.tar.gz 17-Aug-2010 26k

Testing status by version:

StatusTestedReal time (s)
i686-linux
cmSuccessSun Mar 6 00:08:40 201611
cm-debugFailureSun Mar 6 00:05:09 20160
last breakThu Sep 27 00:28:00 20123
mips-irix
cmSuccessSun Aug 19 03:42:31 2007140
cm-debugSuccessWed Aug 8 04:26:18 2007664
cm-debug-clear-mallocFailureTue Aug 21 01:45:39 200712
last breakTue Apr 11 01:39:00 200612
cm-debug-clear-malloc7FailureTue Aug 21 01:45:12 200713
last breakTue Apr 11 01:40:00 200611
cm64SuccessSun Aug 19 03:51:21 2007158
cm64-debugSuccessTue Aug 14 04:10:37 2007719
rs6000-aix
cmSuccessWed Mar 4 01:19:50 200921
cm-debugSuccessMon Mar 2 01:45:32 2009222
cm64SuccessWed Mar 4 01:19:51 200922
cm64-debugFailureWed Mar 4 01:10:33 20091
last breakThu Sep 13 02:09:00 20071
x86_64-linux
cmSuccessSun Mar 6 00:01:23 20166
cm-debugSuccessSat Mar 5 00:05:16 201629

Testing status by file:


Html last generated: Sun Mar 6 05:50:32 2016

Input last modified: Mon Aug 16 11:21:50 2010


CMISS Help / Examples / 7 / 72 / 727