00001
00002
00003
00004
00018 #ifndef FSELECT_H
00019 #define FSELECT_H
00020
00021 #include "mdapi/mdtypes.h"
00022 #include "force/fparam.h"
00023
00024 #ifdef __cplusplus
00025 extern "C" {
00026 #endif
00027
00028
00036 typedef struct ForceSelect_t {
00037 int32 *bond_sel;
00039 int32 *angle_sel;
00041 int32 *dihed_sel;
00043 int32 *impr_sel;
00045 int32 *aset_sel;
00047 int32 *bset_sel;
00049 int32 *bres_sel;
00052 int32 bond_sel_len;
00054 int32 angle_sel_len;
00056 int32 dihed_sel_len;
00058 int32 impr_sel_len;
00060 int32 aset_sel_len;
00062 int32 bset_sel_len;
00064 int32 bres_sel_len;
00067 int32 self_alloc_sel;
00070 } ForceSelect;
00071
00072
00073 enum ForceSelectFlags_t {
00074 FORCE_SELECT_ALL = -1,
00076 FORCE_SELECT_NONE = 0,
00078 FORCE_SELECT_BOND = 0x001,
00080 FORCE_SELECT_ANGLE = 0x002,
00082 FORCE_SELECT_DIHED = 0x004,
00084 FORCE_SELECT_IMPR = 0x008,
00086 FORCE_SELECT_ASET = 0x010,
00088 FORCE_SELECT_BSET = 0x020,
00090 FORCE_SELECT_BRES = 0x040,
00092 FORCE_SELECT_MASK = 0x07f
00094 };
00095
00096
00151 ForceSelect *force_select_create(ForceParam *fprm,
00152 int32 *bond_sel, int32 bond_sel_len,
00153 int32 *angle_sel, int32 angle_sel_len,
00154 int32 *dihed_sel, int32 dihed_sel_len,
00155 int32 *impr_sel, int32 impr_sel_len,
00156 int32 *aset_sel, int32 aset_sel_len,
00157 int32 *bset_sel, int32 bset_sel_len,
00158 int32 *bres_sel, int32 bres_sel_len);
00159
00165 void force_select_destroy(ForceSelect *);
00166
00175 int force_select_initialize(ForceSelect *, ForceParam *fprm,
00176 int32 *bond_sel, int32 bond_sel_len,
00177 int32 *angle_sel, int32 angle_sel_len,
00178 int32 *dihed_sel, int32 dihed_sel_len,
00179 int32 *impr_sel, int32 impr_sel_len,
00180 int32 *aset_sel, int32 aset_sel_len,
00181 int32 *bset_sel, int32 bset_sel_len,
00182 int32 *bres_sel, int32 bres_sel_len);
00183
00189 void force_select_cleanup(ForceSelect *);
00190
00192 void force_select_reset_force(MD_Dvec f[], const int32 sel[], int32 len);
00193
00195 void force_select_reset_potential(double e[], const int32 sel[], int32 len);
00196
00197 #ifdef __cplusplus
00198 }
00199 #endif
00200
00201 #endif