Page 1 of 2 12 LastLast
Results 1 to 10 of 12

Thread: 'Ogden unconstrained'+'fibre-exp-pow' problem

  1. #1
    Join Date
    Jan 2019
    Location
    Gold Coast, Australia
    Posts
    73

    Default 'Ogden unconstrained'+'fibre-exp-pow' problem

    I have two rigid bodies bridged by ligament which shares nodes with these rigid bodies. I have assigned 'Ogden unconstrained'+'fibre-exp-pow' to ligament and Febio failed:'FATAL Error'. Then, I assigned 'Ogden unconstrained'+'fiber-exp-pow-uncoupled' and Febio converged to solution. What would be the problem?

    I have enclosed two .feb files for two cases: (1) 'Ogden unconstrained'+'fibre-exp-pow' and (2) 'Ogden unconstrained'+'fibre-exp-pow'. You will see other problem in results related to contacting surfaces which I posted in appropriate section of the forum. tempModel_fiber_exp_pow_uncoupled.febtempModel_fiber_exp_pow.feb

  2. #2
    Join Date
    Nov 2007
    Location
    Salt Lake City, UTAH
    Posts
    2,146

    Default

    Hi,

    Neither of these files are working, probably because the ligament is not attached to the bones (as explained in my response to your other question), so let us know if this issue persists after you fixed the connection problem. I do want to point out that if you are using uncoupled materials in a solid mixture, you should use "uncoupled solid mixture".

    Cheers,

    Steve
    Department of Bioengineering, University of Utah
    Scientific Computing and Imaging institute, University of Utah

  3. #3
    Join Date
    Jan 2019
    Location
    Gold Coast, Australia
    Posts
    73

    Default

    tempModel.febHi Steve,

    I fixed the problem related to ligament attachment (created rigid interfaces as for now I do not know how to merge surface and volume meshes). After fixing it, the above issue still persists: Ogden unconstrained+fibre-exp-pow is not working!

  4. #4
    Join Date
    Nov 2007
    Location
    Salt Lake City, UTAH
    Posts
    2,146

    Default

    Hi,

    The "k" parameters you are using are not defined for these materials. For "Ogden unconstrained" change "k" to "cp", and remove "k" from "fiber-exp-pow". (For details, check the user manual, section 4.1.3.8 and 4.1.3.19). With these changes, this model runs for me in FEBio 2.9.

    Cheers,

    Steve
    Department of Bioengineering, University of Utah
    Scientific Computing and Imaging institute, University of Utah

  5. #5
    Join Date
    Jan 2019
    Location
    Gold Coast, Australia
    Posts
    73

    Default

    Thanks Steve,

    Its working now.

    Where can I find more .feb examples on inverse FEA material properties fitting, failure models ....

    Cheers,
    Nataliya

  6. #6
    Join Date
    Nov 2007
    Location
    Salt Lake City, UTAH
    Posts
    2,146

    Default

    Hi Nataliya,

    There are a few problems in our test suite (which is distributed as part of the FEBio installation package). The optimization problems start with "op". Take a look and don't hesitate if you have any further questions.

    Cheers,

    Steve
    Department of Bioengineering, University of Utah
    Scientific Computing and Imaging institute, University of Utah

  7. #7
    Join Date
    Jan 2019
    Location
    Gold Coast, Australia
    Posts
    73

    Default

    Hi Steve,

    I have tried to run op01, op02 and op03 and got this message:
    Reading file op03.feb ...FAILED!
    FATAL ERROR: febio_spec tag was not found. This is not a valid input file.
    Would it be because of 2.0 version written in .feb files which is not compatible with 2.5 I am using currently?

    For now, I am concentrating in finding an example which can help me to determine boundary conditions for two rigid bodies prescribed by matrices which contain displacement and rotation. What example would be appropriate to use?

    Cheers,
    Nat

  8. #8
    Join Date
    Nov 2007
    Location
    Salt Lake City, UTAH
    Posts
    2,146

    Default

    Hi Nat,

    To run the optimization problems, you need to specify two input files on the command line, the model input file, and the optimization input file. Each of the optimization input files in the test suite has a corresponding model input file, which are the "oi" files. (although I think op03 also uses oi01). So, to run an optimization problem, you run FEBio as follows:

    Code:
    feiob -i oi.feb -s op.feb
    There is no way to describe the rigid body via a matrix. Instead, you need to prescribe the translation and rotation separately via prescribed rigid body constraints. There are several examples in the suite that use rigid bodies. The "ri" problems are a good place to start.

    Cheers,

    Steve
    Department of Bioengineering, University of Utah
    Scientific Computing and Imaging institute, University of Utah

  9. #9
    Join Date
    Jan 2019
    Location
    Gold Coast, Australia
    Posts
    73

    Default

    Hi Steve,

    I think I figured out my needs. I want to prescribe the translation and rotation to rigid bodies in the loop (I got boundary conditions (displacement and rotation from 4DCT scans for rigid bodies). Would it be a multi-step analysis? I have checked all 'ri' examples and have not come across with multi-step analysis. Maybe you can point at right examples to look at? In febio manual in Chapter 5 I have not found examples relevant to rigid bodies.

    Would it be appropriate from syntax point of view do this:
    %Get a template with default settings
    [febio_spec]=febioStructTemplate;

    %febio_spec version
    febio_spec.ATTR.version='2.5';

    %Module section
    febio_spec.Module.ATTR.type='solid';

    %Control section
    stepStruct.Control.analysis.ATTR.type='static';
    stepStruct.Control.title='Scaphoid-Ligament-Lunate fitting analysis';
    stepStruct.Control.time_steps=numTimeSteps;
    stepStruct.Control.step_size=1/numTimeSteps;
    stepStruct.Control.time_stepper.dtmin=dtmin;
    stepStruct.Control.time_stepper.dtmax=dtmax;
    stepStruct.Control.time_stepper.max_retries=max_re tries;
    stepStruct.Control.time_stepper.opt_iter=opt_iter;
    stepStruct.Control.max_refs=max_refs;
    stepStruct.Control.max_ups=max_ups;

    %Add template based default settings to proposed control section
    [stepStruct.Control]=structComplete(stepStruct.Control,febio_spec.Cont rol,1); %Complement provided with default if missing

    %Remove control field (part of template) since step specific control sections are used
    febio_spec=rmfield(febio_spec,'Control');

    %Material section
    febio_spec.Material.ATTR.type='solid';

    ....

    %Step specific control section
    febio_spec.Step{1}.Control=stepStruct.Control;
    febio_spec.Step{1}.ATTR.id=1;


    febio_spec.Step{1}.Boundary.rigid_body{2}.ATTR.mat =3;
    febio_spec.Step{1}.Boundary.rigid_body{2}.fixed{1} .ATTR.bc='Rx';
    febio_spec.Step{1}.Boundary.rigid_body{2}.fixed{2} .ATTR.bc='Ry';
    febio_spec.Step{1}.Boundary.rigid_body{2}.fixed{3} .ATTR.bc='Rz';

    febio_spec.Step{1}.Boundary.rigid_body{2}.prescrib ed{1}.ATTR.bc='x';
    febio_spec.Step{1}.Boundary.rigid_body{2}.prescrib ed{1}.ATTR.lc=1;
    febio_spec.Step{1}.Boundary.rigid_body{2}.prescrib ed{1}.VAL=3;

    febio_spec.Step{1}.Boundary.rigid_body{2}.prescrib ed{2}.ATTR.bc='y';
    febio_spec.Step{1}.Boundary.rigid_body{2}.prescrib ed{2}.ATTR.lc=1;
    febio_spec.Step{1}.Boundary.rigid_body{2}.prescrib ed{2}.VAL=-3;

    febio_spec.Step{1}.Boundary.rigid_body{2}.prescrib ed{3}.ATTR.bc='z';
    febio_spec.Step{1}.Boundary.rigid_body{2}.prescrib ed{3}.ATTR.lc=1;
    febio_spec.Step{1}.Boundary.rigid_body{2}.prescrib ed{3}.VAL=3;
    Obviously, I am doing something wrong as I am receiving this message:
    Error using fieldnames
    Invalid input argument of type 'double'. Input must be a structure or a Java or COM object.

    Error in febioStruct2xml>febioStruct2xmlStep (line 107)
    fieldNameSet = fieldnames(parseStruct);

    Thanks for a help.
    Cheers,
    Nataliya
    Last edited by NataCalc; 05-29-2019 at 10:40 PM.

  10. #10
    Join Date
    Jan 2019
    Location
    Gold Coast, Australia
    Posts
    73

    Default

    Hello,

    If I do have displacement vector in x, y and z directions [x y z] and I do have rotation vector in Rx, Ry and Rz directions [Rx Ry Rz], do I have to create:
    step 1 - displacement in x, fix y, z, Rx, Ry, Rz; load curve 1.
    step 2- displacement in y, fix x,z,Rx,Ry,Rz; load curve 2.
    step 3- displacement in z, fix x,y,Rx,Ry,Rz;load curve 3.
    step 4- rotation in Rx, fix x,y,z,Ry,Rz; load curve 4...
    and etc ....
    in total 6 steps to complete one transformation matrix for one object.

    Do I have to create for each step load curve?

    If I need to create the load curve for each step where to find the description of load curve for rigid body?
    For instance, when I simply use
    %LoadData section
    febio_spec.LoadData.loadcurve{1}.ATTR.id=1;
    febio_spec.LoadData.loadcurve{1}.ATTR.type='linear ';
    febio_spec.LoadData.loadcurve{1}.point.VAL=[0 0; 1 1];
    its not working even for the first step where there is only displacement in x direction. But when I use
    % LoadData section
    febio_spec.LoadData.loadcurve{1}.ATTR.id=1;
    febio_spec.LoadData.loadcurve{1}.ATTR.type='linear ';
    febio_spec.LoadData.loadcurve{1}.point.VAL=[0 0; 1 1; 2 1];
    then it works. But again for the second step I have to create a different load curve otherwise I receive negative Jacobian.


    Cheers,
    Nat

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •