Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MeshMotionTransfer_SF Class Reference

#include <transfer_actions.h>

Inheritance diagram for MeshMotionTransfer_SF:
Collaboration diagram for MeshMotionTransfer_SF:

Public Member Functions

 MeshMotionTransfer_SF (FluidAgent *fag, SolidAgent *sag, const std::string s_u, const std::string f_total_disp, const std::string f_vm)
 
void init (double t)
 
void run (double t, double dt, double alpha)
 
- Public Member Functions inherited from InterMeshTransfer
 InterMeshTransfer (FluidAgent *fag, SolidAgent *sag, char *name=NULL)
 
- Public Member Functions inherited from Action
 Action (void *p=0, char *name=NULL)
 
 Action (int n, const char *at[], int *i=NULL, void *p=0, char *name=NULL)
 
 Action (int n, const std::string at[], int *i=NULL, void *p=0, char *name=NULL)
 
virtual ~Action ()
 
virtual void declare (Scheduler &)
 
virtual void finalize ()
 
virtual char * name ()
 
void set_name (const char *name)
 
virtual void print (FILE *f)
 
virtual void print_toposort (FILE *f)
 
virtual void schedule ()
 

Private Attributes

int s_u_hdl
 
int f_total_disp_hdl
 
int f_vm_hdl
 
int f_nc_hdl
 
int f_nc_t0_hdl
 
int RFC_interpolate
 

Additional Inherited Members

- Protected Types inherited from Action
enum  { IN =1, OUT =2, INOUT =3 }
 
- Protected Member Functions inherited from InterMeshTransfer
void load_rocface (const RocmanControl_parameters *param)
 
- Protected Member Functions inherited from Action
int get_attribute_handle (int i)
 
int get_attribute_handle_const (int i)
 
int get_attribute_handle (const std::string str)
 
void set_attr (int n, const std::string at[], int *id=NULL)
 
void set_attr (int n, const char *at[], int *id=NULL)
 
void set_io (int n, const int *io)
 
void set_io (const char *io)
 
int get_io (int i)
 
- Protected Attributes inherited from InterMeshTransfer
FluidAgentfagent
 
SolidAgentsagent
 
- Protected Attributes inherited from Action
char * action_name
 
char ** attr
 
int * idx
 
int count
 
void * usr_ptr
 
std::vector< int > inout
 

Detailed Description

Definition at line 123 of file transfer_actions.h.

Constructor & Destructor Documentation

MeshMotionTransfer_SF ( FluidAgent fag,
SolidAgent sag,
const std::string  s_u,
const std::string  f_total_disp,
const std::string  f_vm 
)
explicit

Definition at line 634 of file transfer_actions.C.

References InterMeshTransfer::fagent, Agent::get_surface_window(), FluidAgent::ifluid_i, Action::IN, Action::INOUT, Action::OUT, Agent::register_clone_attribute(), InterMeshTransfer::sagent, Action::set_attr(), Action::set_io(), and SolidAgent::solidBufBase.

636  :
637  InterMeshTransfer(fag, sag, (char *)"MeshMotionTransfer_SF")
638 {
639  // isolid_i+".nc" (in), isolid_i+".u" (in), fagent->ifluid_i+".vm" (out)
640  int io[] = {IN, IN, INOUT, OUT};
641  set_io( 4, io);
642 
643  std::string atts[4];
644  atts[0] = sagent->solidBufBase+".nc";
645  atts[1] = s_u;
646  atts[2] = f_total_disp;
647  atts[3] = f_vm;
648  set_attr(4, atts);
649 
650  // Change to transfer total_displacement from solid to fluids, and obtain
651  // incremental displacement as (nc_t0+total_disp)-nc_tn. This is prone
652  // to cancellation errors but avoids accumulation of any errors.
653  fagent->register_clone_attribute( 0, fagent->ifluid_i, ".total_disp", fagent->get_surface_window(), ".du_alp");
655  // nc_tmp is used to compare against solid nodal coordinates.
656  //fagent->register_clone_attribute( 0, fagent->ifluid_i, ".nc_tmp", fagent->get_surface_window(), ".nc");
657  //fagent->register_new_attribute( fagent->ifluid_i, ".sq_dist", 'n', COM_DOUBLE, 1, "m");
658 }
SolidAgent * sagent
FluidAgent * fagent
void register_clone_attribute(int cond, std::string target_window_, std::string attr_, std::string parent_window_, std::string parent_attr_, int wg_=1, const char *ptnname_=0, int val_=0)
Definition: Agent.C:328
std::string get_surface_window() const
Definition: Agent.h:217
std::string ifluid_i
Definition: FluidAgent.h:70
std::string solidBufBase
Definition: SolidAgent.h:67
void set_io(int n, const int *io)
Definition: Action.h:70
InterMeshTransfer(FluidAgent *fag, SolidAgent *sag, char *name=NULL)
void set_attr(int n, const std::string at[], int *id=NULL)
Definition: Action.C:66

Here is the call graph for this function:

Member Function Documentation

void init ( double  t)
virtual

Reimplemented from Action.

Definition at line 660 of file transfer_actions.C.

References COM_get_attribute_handle(), COM_get_function_handle(), f_nc_hdl, f_nc_t0_hdl, f_total_disp_hdl, f_vm_hdl, InterMeshTransfer::fagent, FluidAgent::fluidBufNG, Action::get_attribute_handle(), Agent::get_coupling(), Coupling::get_rocmancontrol_param(), InterMeshTransfer::load_rocface(), RFC_interpolate, and s_u_hdl.

660  {
661  // skip 0
665 
668 
669  // POST_INIT_FLUID in fluid_agent.f90
670  // initial_start ?????
671 // if (t == 0.0) {
672  // TODO ???
673 // COM_call_function( RocBlas::copy, &f_nc_hdl, &f_nc_t0_hdl);
674  // UPDATE_INBUFF_GM_FLUID ???????????????
675 // double zero = 0.0;
676 // fagent->obtain_gm(&zero);
677 // }
678 
680  RFC_interpolate = COM_get_function_handle("RFC.interpolate");
681 }
void load_rocface(const RocmanControl_parameters *param)
FluidAgent * fagent
int get_attribute_handle(int i)
Definition: Action.C:93
int COM_get_attribute_handle(const char *waname)
Definition: roccom_c++.h:412
Coupling * get_coupling()
Definition: Agent.h:213
std::string fluidBufNG
Definition: FluidAgent.h:78
const RocmanControl_parameters * get_rocmancontrol_param()
Definition: Coupling.h:184
int COM_get_function_handle(const char *wfname)
Definition: roccom_c++.h:428

Here is the call graph for this function:

void run ( double  t,
double  dt,
double  alpha 
)
virtual

Reimplemented from Action.

Definition at line 684 of file transfer_actions.C.

References RocBlas::add, COM_call_function(), RocBlas::div_scalar, f_nc_hdl, f_nc_t0_hdl, f_total_disp_hdl, f_vm_hdl, InterMeshTransfer::fagent, Agent::get_coupling(), Coupling::initial_start(), MAN_DEBUG, RFC_interpolate, s_u_hdl, and RocBlas::sub.

684  {
685  MAN_DEBUG(3, ("Rocstar: calling MeshMotionTransfer_SF::run() with t:%e dt:%e alpha:%e.\n", t, dt, alpha));
686 
687  // b. Interpolates total displacement from solid nodes to fluid nodes
688  //debug_print(sagent->solidBuf+".u", 109, 0, sagent->get_communicator(), "U");
690 
691  // Compute incremental mesh volocity
692  if (!fagent->get_coupling()->initial_start()) {
693  // Compute incremental mesh volocity
697  }
698 }
FluidAgent * fagent
static int add
Definition: RocBlas.h:35
Coupling * get_coupling()
Definition: Agent.h:213
void COM_call_function(const int wf, int argc,...)
Definition: roccom_c.C:48
#define MAN_DEBUG(l, x)
Definition: rocman.h:98
static int sub
Definition: RocBlas.h:36
int initial_start() const
Definition: Coupling.h:163
static int div_scalar
Definition: RocBlas.h:46

Here is the call graph for this function:

Member Data Documentation

int f_nc_hdl
private

Definition at line 130 of file transfer_actions.h.

Referenced by init(), and run().

int f_nc_t0_hdl
private

Definition at line 130 of file transfer_actions.h.

Referenced by init(), and run().

int f_total_disp_hdl
private

Definition at line 129 of file transfer_actions.h.

Referenced by init(), and run().

int f_vm_hdl
private

Definition at line 129 of file transfer_actions.h.

Referenced by init(), and run().

int RFC_interpolate
private

Definition at line 131 of file transfer_actions.h.

Referenced by init(), and run().

int s_u_hdl
private

Definition at line 129 of file transfer_actions.h.

Referenced by init(), and run().


The documentation for this class was generated from the following files: