Hi SD The only reason I don't believe the natural frequency and wave frequency is the issue is because the flap falls over instantly, even without the presence of waves. For example, even when I preview mesh motion the flap falls over, so I don't think the waves have an influence on the issue I am experiencing.
I changed the water depth to completely submerge the OWSC and the results were even worse.. I lowered the timestep to 0.001s and still got a negative cell volume because the flap falls over so fast. It's almost like the moment of inertia is causing some sort of torque on the device...
Regarding rotational constraints, I originally set constraints for the rotational angle to -30 and +30 degrees.

I've tried writing a UDF for my case so I could apply an external buoyancy force to pull the flap back up to equilibrium, but didn't have any luck. Here's a my code:

#include "udf.h"

DEFINE_SDOF_PROPERTIES(flap, sdof_prop, dt, time, dtime)
Six_DOF_Object *sdof_obj = NULL;

sdof_prop[SDOF_MASS] = 345.28985 ;
sdof_prop[SDOF_IXX] = 0.0;
sdof_prop[SDOF_IYY] = 0.0;
sdof_prop[SDOF_IZZ] = 1595.98980;
sdof_prop[SDOF_LOAD_M_X] = 0.0;
sdof_prop[SDOF_LOAD_M_Y] = 0.0;
sdof_prop[SDOF_LOAD_M_Z] = 16664*sin(DT_THETA(dt)[2]); /*16,664 is the hydrostatic restoring coefficient*/

sdof_obj = Get_SDOF_Object(DT_PU_NAME(dt));

if (NULLP(sdof_obj))
/* Allocate_SDOF_Object must be called with the same name as the udf */
sdof_obj = Allocate_SDOF_Object(DT_PU_NAME(dt));

SDOFO_1DOF_T_P(sdof_obj) = FALSE;/* one DOF translation */
SDOFO_1DOF_R_P(sdof_obj) = TRUE;/* one DOF rotation */
SDOFO_DIR(sdof_obj)[0] = 0.0;
SDOFO_DIR(sdof_obj)[1] = 0.0;
SDOFO_DIR(sdof_obj)[2] = 1.0; /*rotation about the z-axis only*/
SDOFO_CENTER_ROT(sdof_obj)[0] = 0.0;/* only needed for one DOF rotation. Center of Rotation is at [0 0 0] meters */
SDOFO_CENTER_ROT(sdof_obj)[1] = 0.0;/* only needed for one DOF rotation. Center of Rotation is at [0 0 0] meters */
SDOFO_CENTER_ROT(sdof_obj)[2] = 0.0;/* only needed for one DOF rotation. Center of Rotation is at [0 0 0] meters */
SDOFO_CONS_P(sdof_obj) = TRUE;/* constrained */

if (SDOFO_CONS_P(sdof_obj))
SDOFO_LOC(sdof_obj) = 0.0;
SDOFO_MIN(sdof_obj) = -0.52;
SDOFO_MAX(sdof_obj) = 0.52;
SDOFO_F(sdof_obj) = 0.0;/* spring preload */
SDOFO_K(sdof_obj) = 0.0;/* spring constant. Also tried with 16664 Nm/rad and it didn't work either */

SDOFO_INIT(sdof_obj) = SDOFO_LOC(sdof_obj);
SDOFO_LOC_N(sdof_obj) = SDOFO_LOC(sdof_obj);

I don't think it really matters whether I initialize using a Flat or Wavy method, is this correct?
Please let me know if you have any more help with this. I really need to get this issue figured out!!