Giter Club home page Giter Club logo

Comments (8)

dzalkind avatar dzalkind commented on September 15, 2024

I'm not sure what you mean by a beamdyn only model. ROSCO is looking for some data from ElastoDyn, but not much:

self.TipRad = fast.fst_vt['ElastoDyn']['TipRad']

from rosco.

rdamiani avatar rdamiani commented on September 15, 2024

Apologies, I was too fast hitting submit :). It seems to me that the analogous of the following is missing from turbine.py for reading beamdyn blade properties:

# file ed_file = os.path.join(fast.FAST_directory, fast.fst_vt['Fst']['EDFile']) fast.read_ElastoDyn(ed_file) ed_blade_file = os.path.join(os.path.dirname(ed_file), fast.fst_vt['ElastoDyn']['BldFile1']) fast.read_ElastoDynBlade(ed_blade_file)

I think a check on whether a ED blade file is used vs. BD blade file is used should be done and then select the correct blade file, or am i wrong?

from rosco.

dzalkind avatar dzalkind commented on September 15, 2024

Yeah, that's a reasonable suggestion. The only thing that ROSCO wants from an ED blade is the damping, which is only used to tune the trailing edge flap control.

If you have an example and a fix, I'd be happy to help merge it in. Otherwise, I'll leave this open until we get to it.

from rosco.

rdamiani avatar rdamiani commented on September 15, 2024

Hi Dan, sorry for the delay, I have modified it like this, but I am still testing it out, as I am getting some issues with the read of AD data now, but I will let you know how it goes.

  ` if fast.fst_vt['Fst']['CompElast'] ==1:
        ed_file = os.path.join(fast.FAST_directory, fast.fst_vt['Fst']['EDFile'])
        fast.read_ElastoDyn(ed_file)
        ed_blade_file = os.path.join(os.path.dirname(ed_file), fast.fst_vt['ElastoDyn']['BldFile1'])
        fast.read_ElastoDynBlade(ed_blade_file)
    elif fast.fst_vt['Fst']['CompElast'] ==2:
        bd_file = os.path.join(fast.FAST_directory, fast.fst_vt['Fst']['BDBldFile(1)'])
        fast.read_BeamDyn(bd_file)
        bd_blade_file = os.path.join(os.path.dirname(bd_file), fast.fst_vt['BeamDyn']['BldFile'])
        fast.read_BeamDynBlade(bd_blade_file)
    else:
        Warning('No ElastoDyn or BeamDyn files were provided')`

from rosco.

rdamiani avatar rdamiani commented on September 15, 2024

ok
this is the approximation I am using :
line 172

# RRD changed the following to include ED vs. BD
      if fast.fst_vt['Fst']['CompElast'] >=1:
            ed_file = os.path.join(fast.FAST_directory, fast.fst_vt['Fst']['EDFile'])
             fast.read_ElastoDyn(ed_file)
        if fast.fst_vt['Fst']['CompElast'] ==1:
             ed_blade_file = os.path.join(os.path.dirname(ed_file), fast.fst_vt['ElastoDyn']['BldFile1'])
             fast.read_ElastoDynBlade(ed_blade_file)
        elif fast.fst_vt['Fst']['CompElast'] ==2:
             bd_file = os.path.join(fast.FAST_directory, fast.fst_vt['Fst']['BDBldFile(1)'])
             fast.read_BeamDyn(bd_file)
             bd_blade_file = os.path.join(os.path.dirname(bd_file), fast.fst_vt['BeamDyn']['BldFile'])
             fast.read_BeamDynBlade(bd_blade_file)
        else:
            Warning('No ElastoDyn or BeamDyn blade files were provided')

line 600

        self.bld_flapwise_damp = 0.        
        if self.fast.fst_vt['Fst']['CompElast'] ==1:
           self.bld_flapwise_damp = self.fast.fst_vt['ElastoDynBlade']['BldFlDmp1']/100
        elif self.fast.fst_vt['BeamDynBlade']['damp_type']:
           self.bld_flapwise_damp = self.fast.fst_vt['BeamDynBlade']['mu5']*0.5*self.bld_flapwise_freq 

Hope this helps develop something for BD-blade cases.

from rosco.

dzalkind avatar dzalkind commented on September 15, 2024

This is helpful...thanks!

from rosco.

rdamiani avatar rdamiani commented on September 15, 2024

A couple of other questions (for fixed pitch cases); it seems as if ROSCO wants to change pitch even if IPC_ControlMode=PC_ControlMode=0 ; I resorted to setting min_pitch= max_pitch=0, however there are two issues with that:

  1. controller.py checks if not isinstance(self.min_pitch, float) and would not take the set values if they are not specified as 0. in the yaml, which is a bit annoying
  2. ROSCO checks min '>=' max and bombs, i think this could work with '>' which is what I did for my version, but perhaps there are other reason why you want the check to be more stringent

from rosco.

abhineet-gupta avatar abhineet-gupta commented on September 15, 2024

Issue with reading beamdyn resolved in #349. I'll create another issue for the question with fixed pitch case after some testing.

from rosco.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.